Easily share code between iOS, Android and Windows devices.
High-performance compiled code with full access to all the native APIs, including UIKit.
Everything you love about .NET, including LINQ, Delegates and Events.
Xamarin.iOS makes creating iPhone and iPad apps easier than ever before.
Thinking about supporting Android in the future? Reuse up to 90% of your existing C# code when porting from iOS to Android with Xamarin.Android.
Explore APIs as you type with code autocompletion.
Xamarin.iOS provides full access to iOS APIs. Take advantage of the entire spectrum of rich functionality supplied by the latest version of the platform.
Use your favorite .NET libraries in Xamarin.iOS applications. Easily bind third-party native libraries and frameworks. Or use the Xamarin Component Store, which offers dozens of third-party libraries packaged for instant adoption.
Use Xcode 4's powerful UI designer to create interfaces and Storyboards that automatically sync with your Xamarin.iOS project.
Xamarin.iOS is frequently updated and ready with all of the latest iOS features—typically on the same day that Apple releases a platform update!
Hundreds of thousands of developers are already using Xamarin to create amazing apps.





















Software Developer, iCircuit
Cross Platform Software Solutions
Some of the wonderful apps that Xamarin.iOS developers have created are featured in our App Showcase.
With Xamarin.iOS, you can harness the full power of C# and .NET. Write shorter, simpler, and more maintainable code using features like LINQ, anonymous types, lambdas and more.
from p in Table<Person> ()
where p.ID == id
select p;
Use LINQ in your Xamarin.iOS projects to query, filter and select data from in-memory arrays, or from databases such as SQLite.
var doc = XDocument.Load(url);
foreach(var item in doc.Root.Elements()) {
var text = item.Value;
}
Handling XML is quick and easy thanks to the built-in XDocument class - just one of the thousands of .NET APIs available when you use Xamarin.iOS.
button.TouchUpInside += (s, o) => {
message.Text = "Hello!";
};
Easily handle button presses and other UI events.
from item in items.AsParallel () let result = DoExpensiveWork (item) select result;
Use Parallel LINQ to automatically distribute heavy work, like parsing large JSON results, over both cores of an iPad 2 or iPhone 4S.
CIContext *context =
[CIContext contextWithOptions:
[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]
forKey:kCIContextUseSoftwareRenderer]];
CIImage *ciImage = [CIImage initWithCGImage:cgImage];
CIFilter *hueAdjustFilter = [CIFilter filterWithName:@"CIHueAdjust"];
CIFilter *colorControlsFilter = [CIFilter filterWithName:@"CIColorControls"];
[hueAdjustFilter setValue:[NSNumber numberWithDouble:3.0 * M_PI] forKey:@"inputAngle"];
[colorControlsFilter setDefaults];
[colorControlsFilter setValue:[NSNumber numberWithDouble:1.3] forKey:@"inputSaturation"];
[colorControlsFilter setValue:[NSNumber numberWithDouble:0.3] forKey:@"inputBrightness"];
[hueAdjustFilter setValue:ciImage forKey:@"inputImage"];
[colorControlsFilter setValue:[hueAdjustFilter valueForKey:@"outputImage"] forKey:@"inputImage"];
ciImage = [colorControlsFilter valueForKey:@"outputImage"];
[context [createCGImage: ciImage fromExtent:[ciImage extent]]];
var context = CIContext.FromOptions (new CIContextOptions () {
UseSoftwareRenderer = true
});
var ciImage = new CIImage (cgImage);
var hueAdjustFilter = new CIHueAdjust {
InputAngle = 3.0f * Math.PI,
Image = ciImage,
};
var colorControlsFilter = new CIColorControls {
InputSaturation = 1.3f,
InputBrightness = 0.3f,
Image = hueAdjustFilter.OutputImage
};
ciImage = colorControlsFilter.OutputImage;
context.CreateImage (ciImage, ciImage.Extent);
CFStringRef keys[] = {
kCTFontAttributeName,
kCTForegroundColorAttributeName
};
CFTypeRef bval[] = {
cfListLineCTFontRef,
CGColorGetConstantColor(kCGColorBlack)
};
attr = CFDictionaryCreate (kCFAllocatorDefault,
(const void **) &keys, (const void **) &bval,
sizeof(keys) / sizeof(keys[0]), &kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
astr = CFAttributedStringCreate(kCFAllocatorDefault, CFSTR("Hello World"), attr);
var attrs = new CFStringAttributes {
Font = listLineCTFont,
ForegroundColor = UIColor.Black.CGColor
};
var astr = new NSAttributedString ("Hello World", attrs);
UInt32 maxPacketSize;
UInt32 Propertysize = sizeof(maxPacketSize);
AudioFileGetProperty (
audioFileID,
kAudioFilePropertyPacketSizeUpperBound,
&Propertysize,
&maxPacketSize
);
var maxPacketSize = audioFile.PacketSizeUpperBound;
To learn more, check out our awesome documentation: Documentation | Code Samples | Tutorials
Choose the version of Xamarin.iOS that is right for you and your company.