Xamarin.iOS sample apps
C# Objective-C Makefile GLSL F# HTML Other
Permalink
Failed to load latest commit information.
AQTapDemo Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
AUSoundTriggeredPlayingSoundMemoryBased update xibs and storyboards Jul 20, 2017
AVCaptureFrames update xibs and storyboards Jul 20, 2017
AVCompositionDebugVieweriOS Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
AVCustomEdit Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
AVTouchSample [XISamples]Update xibs Jul 21, 2017
AirLocate Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
AppPrefs Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
ApplicationFundamentals Use WeakReferences in a few places Aug 2, 2017
AsyncDownloadImage update xibs and storyboards Jul 20, 2017
AudioConverterFileConverter Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
AudioGenerator Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
AudioQueueOfflineRenderDemo Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
AudioTapProcessor Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
BackgroundExecution Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
BindingSample Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
BouncingGameCompleteiOS Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
BouncingGameEmptyiOS Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
BubbleCell [BubbleCell] deprecate sample May 6, 2015
ButtonEventDemo Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
ButtonTapper3000 Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Calendars Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Chat Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
CircleLayout Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
CollectionViewTransition Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
ContentControls removed duplicate samples, add moveto.md Feb 12, 2013
Controls Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
CoreAnimation update xibs and storyboards Jul 20, 2017
CoreImage Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
CoreLocation update xibs and storyboards Jul 20, 2017
CoreMidiSample Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
CoreTelephonyDemo fix CoreTelephonyDemo Aug 9, 2017
CreatingTabbedApplications Bundle Identifier Fix Oct 30, 2017
CustomCollectionViewLayoutAttributes Bundle Identifier Fix Oct 30, 2017
CustomInputStream Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
CustomPropertyAnimation Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
CustomTransitions Xisamplearchfix (#190) Oct 2, 2017
Data Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
DesignerWalkthrough Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
DispatchSourceExamples Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Drawing Bundle Identifier Fix Oct 30, 2017
DynamicsCatalog Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
EvolveGraphicsAndAnimation Adding readme for moved file. Nov 6, 2015
FileSystemSampleCode Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
FontList update xibs and storyboards Jul 20, 2017
FrogScroller Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
GLCameraRipple fix GLCameraRipple Aug 9, 2017
GLPaint-GameView [XISamples]Update xibs Jul 21, 2017
GameCenterSample Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
GoogleAdMobAds/binding Pull from upstream Jan 19, 2015
GraphicsAndAnimation Bundle Identifier Fix Oct 30, 2017
GrowRowTable Adding RowHeight Property to make sample work in iOS 11 Sep 15, 2017
HelloComponents Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
HelloWorld_iPhone Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Hello_ComplexUniversal [XISamples]Update xibs Jul 21, 2017
Hello_MultiScreen_iPhone Bundle Identifier Fix Oct 30, 2017
Hello_Universal Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Hello_iOS move resources from docs Dec 6, 2017
Hello_iPad Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
HomeKit/HomeKitIntro Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
HttpClient [XISamples]Update xibs Jul 21, 2017
ImageProtocol Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
InfColorPicker Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
IntroToAppearance Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
IntroToiOS7 Bundle Identifier Fix Oct 30, 2017
IntroductionToiCloud Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
KeyValueObserving Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Keychain [XISamples]Update xibs Jul 21, 2017
LazyTableImages Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
LazyTableImagesAsync Bundle identifiers fixes Oct 30, 2017
LifecycleDemo Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
LineLayout Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
LocalNotifications Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Location Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
LowLevelGLPaint [XISamples]Update xibs Jul 21, 2017
MTDJsonDemo Bundle identifiers fixes Oct 30, 2017
MTDReflectionWalkthrough Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
MTDWalkthrough Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
MTGKTapper Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
ManualCameraControls Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
ManualStoryboard Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
MapCallouts [XISamples]Update xibs Jul 21, 2017
MapDemo Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
MapKitSearch Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
MediaNotes Bundle Identifier Fix Oct 30, 2017
MidiTest Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
MonoCatalog-MonoDevelop [XISamples]Update xibs Jul 21, 2017
MonoCatalogSample Pull from upstream Jan 19, 2015
MonoDevelopTouchCells [XISamples]Update xibs Jul 21, 2017
MotionGraphs Bundle Identifier Fix Oct 30, 2017
MoviePlayback Bundle Identifier Fix Oct 30, 2017
MultichannelMixer Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
NSZombieApocalypse Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Newsstand Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Notifications Bundle identifiers fixes Oct 30, 2017
OpenGL Delete unnecessary sln files Nov 22, 2017
OpenGLESSample-GameView Bundle Identifier Fix Oct 30, 2017
OpenGLESSample Bundle Identifier Fix Oct 30, 2017
OpenGLScroller Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
PaintCode Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
PassKit Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
PickerControl Adding Picker Control Sample Aug 21, 2017
PinchIt Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
PokerNightVoting Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Popovers Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
PrintBanner Bundle Identifier Fix Oct 30, 2017
PrintSample [XISamples]Update xibs Jul 21, 2017
PrivacyPrompts Updating sample for iOS 11 (#182) Aug 23, 2017
Profiling/MemoryDemo Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Protocols_Delegates_Events Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
QRchestra Bundle Identifier Fix Oct 30, 2017
QuartzSample [XISamples]Update xibs Jul 21, 2017
Quotes Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
ReachabilitySample Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
RecipesAndPrinting [XISamples]Update xibs Jul 21, 2017
RegionDefiner Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
RosyWriter Bundle Identifier Fix Oct 30, 2017
Rotation [XISamples]Update xibs Jul 21, 2017
ScratchTicket [designer] move resources from docs Dec 8, 2017
SearchDemo Bundle Identifier Fix Oct 30, 2017
SharedResources Bundle Identifier Fix Oct 30, 2017
SimpleBackgroundFetch Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
SimpleBackgroundTransfer Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
SimpleCollectionView Bundle identifiers fixes Oct 30, 2017
SimpleDrillDown Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
SimpleLogin Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
SimpleTextInput Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
SoZoomy Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
SocialFrameworkDemo Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Sound Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
SplitView [XISamples]Update xibs Jul 21, 2017
SpriteKit Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
SpriteKitPhysicsCollisions Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
SpriteTour Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
StandardControls removed duplicate samples, add moveto.md Feb 12, 2013
Stars Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
StateRestoration Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
StoreKit Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
StoryboardIntro Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
StoryboardTable Adding Picker Control Sample Aug 21, 2017
StoryboardTable_LocalAuthentication link to newer sample for iOS 11 Nov 9, 2017
StreamingAudio Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
SysSound Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Tabbed_Images Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
TableAndCellStyles removed duplicate samples, add moveto.md Feb 12, 2013
TableEditing [XISamples]Update xibs Jul 21, 2017
TableParts Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
TableSwipeActions Adding Table swipe Actions sample for iOS11 swipe actions Sep 25, 2017
TextKitDemo Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
ThreadedCoreData Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
TicTacToe Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Touch Bundle Identifier Fix Oct 30, 2017
Touches_Classic Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Touches_GestureRecognizers Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Transitioning_To_Xcode_4 Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
TransitionsDemo Bundle Identifier Fix Oct 30, 2017
UIImageEffects Bundle Identifier Fix Oct 30, 2017
ViewTransitions Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
WalkingGameCompleteiOS Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
WalkingGameEmptyiOS Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
WatchKit Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
WayUpSample [XISamples]Update xibs Jul 21, 2017
WeatherMap Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
WebView Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
WorkingWithImages Bundle Identifier Fix Oct 30, 2017
WorkingWithTables Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
Working_with_images Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
WorldCities Bundle Identifier Fix Oct 30, 2017
ZoomingPdfViewer Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
iOS7-ui-updates Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
intro-to-extensions Set deployment target to 9.0 to workaround bug 58156 Jul 24, 2017
ios10 [ios11] SamplePhotoApp updated for iOS 11 Sep 11, 2017
ios11 [ios11] update MapKit coordinates list Dec 6, 2017
ios7fonts Updated architecture setting to 32&64 bit, and specified iOS 9 as min… Jul 19, 2017
ios8 Bundle Identifier Fix Oct 30, 2017
ios9 Set deployment target to 9.0 to workaround bug 58156 Jul 24, 2017
tvos 51413: fixed layout issue (#146) Feb 2, 2017
watchOS Xisamplearchfix (#190) Oct 2, 2017
.gitattributes Add sln file (and make sure it stays as CRLF because VS needs it) for… Sep 9, 2011
.gitignore Support for iOS 10 Sep 30, 2016
LICENSE clarify license for #184 Sep 28, 2017
Make.common Fix MonoCatalogSample build and include basic instructions to use the… Apr 10, 2012
Makefile Add a convenient Makefile to build the samples Jan 16, 2016
README.md clarify license for #184 Sep 28, 2017
Xamarin.Edu.SampleGallery.Core.dll Update sample validator. Jul 5, 2012
install-hook.sh Added CoreAnimation Sample + Chmod +x on git hook install Sep 30, 2011
mdtool-build Fix mdtool build invocation. Oct 4, 2011
pre-commit.posix Fix pre-commit script's use of ==. Feb 20, 2012
validate.posix Fix usage of `find` in some scripts. Feb 17, 2012
xcsv.exe Update sample validator. Jul 5, 2012

README.md

iOS/tvOS/watchOS Samples

The samples in this directory use the Xamarin.iOS toolchain and Xamarin Studio project files to illustrate the basics of how to work with iOS and the SDK.

License

See the repo's license file and any additional license information attached to each sample.

Samples Layout

Version Specific Samples

Starting with iOS 8, we started adding samples that showcase specific features introduced in a release into a directory for the release. So all the new iOS 8 feature samples live in the ios8 directory, the iOS 9 features live in the ios9 directory and the iOS 10 feature lives in the ios10 directory, and so on for iOS 11.

WatchKit

WatchKit samples are in the WatchKit directory, there are a couple of them:

Contributing

Before adding a sample to the repository, please run either install-hook.bat or install-hook.sh depending on whether you're on Windows or a Posix system. This will install a Git hook that runs the Xamarin code sample validator before a commit, to ensure that all samples are good to go.

Samples Submission Guidelines

Galleries

We love samples! Application samples show off our platform and provide a great way for people to learn our stuff. And we even promote them as a first-class feature of the docs site. You can find our two sample galleries here:

Sample GitHub Repositories

These sample galleries are populated by samples in our six sample GitHub repos:

The mobile-samples repository is for samples that are cross-platform. The mac-ios-samples repository is for samples that are Mac/iOS only.

Sample Requirements

We welcome sample submissions. Please ping Nat or Miguel for repo commit access.

However, because the sample galleries are powered by the github sample repos, each sample needs to have the following things:

  • Screenshots - a folder called Screenshots that has at least one screen shot of the sample (preferably a screen shot for every page or every major functionality piece, people really key off these things). for the xplat samples, the folder should be split into platform folders, e.g. iOS, Android, Windows. see https://github.com/xamarin/mobile-samples/tree/master/Tasky/Screenshots for an example of this.

  • Readme - a README.md file that has the name of the sample, a description, and author attribution. sample here: https://github.com/xamarin/mobile-samples/blob/master/Tasky/README.md

  • Metadata - Finally, it needs a Metadata.xml file (https://github.com/xamarin/mobile-samples/blob/master/Tasky/Metadata.xml) that has some information:

    • ID - A GUID for the sample. You can generate this in MD under Tools menu : Insert GUID. we need this to key between articles and their associated samples

    • IsFullApplication - Boolean flag (true or false): whether or not this is a full application such as the MWC App, Tasky, etc., or it's just a feature sample, such as, how to use 'x' feature. the basic test here is, if you would submit this to the app store because it's useful, then it's a full app, otherwise it's just a feature sample.

    • Brief - Short description or what your sample does. This allows us to display a nice and clean vignette on the sample page.

    • Level - Beginner, Intermediate, or Advanced: this is the intended audience level for the sample. only the getting started samples are Beginner, as they are intended for people who are just starting with the platform. most samples are Intermediate, and a few, that dive deep into difficult APIs, should be Advanced.

    • Minimum License Requirement - Starter, Indie, Business, or Enterprise: denotes the license that a user has to have in order to build/run the sample.

    • Tags: a list of relevant tags for the app. These are:

      • Data
      • User Interface
      • Games
      • Graphics (CoreDrawing, Animation, OpenGL...)
      • Media (Video, Sound, recording, photos)
      • Platform Features (Photo Library, Contacts, Calendars, etc.)
      • Device Features (NFC, Accelerometer, Compass, Magnemometer, Bluetooth, RFID)
      • Cloud (Web Services, Networking, etc.)
      • Backgrounding
      • Maps + Location
      • Binding + Interop (Projections)
      • Notifications
      • Touch
      • Getting Started
      • Async
      • Extension
      • iOS8
      • iOS9
      • iOS10
      • Watch
      • Keyboard
      • SceneKit
      • FSharp
    • SupportedPlatforms: this is only for cross plat samples. It's a comma-separated list, and the valid values are iOS, Android, and Windows.

    • Gallery: This tag must contain a value of true if you want the sample to show up in the samples gallery on the developer portal.

  • Buildable Sln and CSProj file - the project must build and have the appropriate project scaffolding (solution + proj).

A good example of this stuff is here in the drawing sample: https://github.com/xamarin/monotouch-samples/tree/master/Drawing

For a x-platform sample, please see: https://github.com/xamarin/mobile-samples/tree/master/Tasky

GitHub Integration

We integrate tightly with Git to make sure we always provide working samples to our customers. This is achieved through a pre-commit hook that runs before your commit goes through, as well as a post-receive hook on GitHub's end that notifies our samples gallery server when changes go through.

To you, as a sample committer, this means that before you push to the repos, you should run the "install-hook.bat" or "install-hook.sh" (depending on whether you're on Windows or OS X/Linux, respectively). These will install the Git pre-commit hook. Now, whenever you try to make a Git commit, all samples in the repo will be validated. If any sample fails to validate, the commit is aborted; otherwise, your commit goes through and you can go ahead and push.

This strict approach is put in place to ensure that the samples we present to our customers are always in a good state, and to ensure that all samples integrate correctly with the sample gallery (README.md, Metadata.xml, etc). Note that the master branch of each sample repo is what we present to our customers for our stable releases, so they must always Just Work.

Should you wish to invoke validation of samples manually, simply run "validate.windows" or "validate.posix" (again, Windows vs OS X/Linux, respectively). These must be run from a Bash shell (i.e. a terminal on OS X/Linux or the Git Bash terminal on Windows).

If you have any questions, don't hesitate to ask on Xamarin Forums!