by Stephen Barnes (@smbarne), Fitbit iOS Engineer
Sample Project used in talk: https://github.com/smbarne/AndroidForiOS
By learning iOS and coming over to the dark side, you can learn from the iOS app, and also help do a quick implementation of a feature you already implemented on Android.
Hamburger menu on Android, not on iOS.
UINavigationController to Push/Pop UIViewControllers
* Use this by default for nested content
* Custom Keyboards
* Photo/Media Editing
* Storage Provider
* Document picker
Swift 2.0 was announced for iOS9 and Xcode 7.
App Store approval can take up to 2 weeks. On Android, it’s up within 12 hours.
* Swift uses modules
* Note: Objective-C has no namespacing so use class prefixes (recommended to be at least 3 characters, and not something like “FB”)
info.plist is required and similar to AndroidManifest.xml n Android
* No build.gradlew. All build info in *.xcodeproj
* There are 3 buckets. Just @1x, @2x, and 3x
* The iPhone 6 is the first device to have @3x and a non-1:1 or 2:1 pixel ratio.
UIViewControllers <-> Activities (UI Building Blocks)
Fundamental view-management model for all iOS apps.
iOS is strongly architected around the MVC framework.
Fragments don’t exist on iOS, and this sort of concept doesn’t really exist. You could do it if you use the Child View Controller Containment, but it’s not recommended unless you have significant iOS experience since this is not a common patter.
ListFragment would be done with a UITableViewController on iOS.
Closures are Apple’s Lambda implementation blocks. These are similar to anonymous functions or AsyncTasks
Main View Components
- PagerAdapter or NavigationDrawer -> UITabBar
- ListView -> UITableView
- GridView -> UICollectionView
iOS Interface Builder is your friend. AutoLayout is almost a must.
Storyboards are powerful and worthwhile.
Core Data is a ORM with some pluses and minuses. Designed to be easy to use and reliable. It is the defacto way to do persistent data as it also has migrations, etc. Contains grouping, filtering and organizing data in memory and in the UI.
- AFNetworking <-> Volley
- MagicalRecord <-> ActiveAndroid
- SDWebImage <-> Picasso