Learning Resources

Code Style

Human Interface Guidelines

If you are new to mobile development or to iOS itself, take some time to take a look at the Human Interface Guidelines by Apple. This is how Apple encourages both designers and developers to build their apps. Sticking to the Human Interface Guidelines (commonly referenced as HIG) is not optional for us, since it comes a lot of benefits for both the development team and the users. Those guidelines also provide a really good overview of native UI components and capabilities such as 3D Touch, Face/Touch ID or Wallet.

Project Structure

In order to keep all your source code in order, you may want to follow some folder structure depending on your architecture. For instance, you can use the following:

├── Project│   ├── AppDelegate.swift│   ├── Assets.xcassets│   ├── Colors.swift│   ├── Constants.swift│   ├── Models│   │   ├── Model1.swift│   │   ├── Model2.swift│   │   ├── Model3.swift│   │   └── ModelN.swift│   ├── Modules│   │   ├── External Services│   │   ├── Project│   │   └── Helpers│   ├── Networking│   │   ├── APIConstants.swift│   │   ├── Services│   │   │   ├── Service1.swift│   │   │   ├── Service2.swift│   │   │   ├── Service3.swift│   │   │   └── ServiceN.swift│   │   └── Utils.swift│   ├── Persistence│   ├── Resources│   ├── Info.plist│   └── User Interface│       ├── Feature1│       ├── Feature2│       ├── Feature3│       └── FeatureN├── Project.xcodeproj├── Project.xcworkspace├── ProjectTests├── ProjectUITests├── Bridging-Header.h├── Podfile├── Podfile.lock├── Pods├── README.md├── env.secrets└── scripts

IDEs

Xcode

Xcode is the IDE of choice for iOS and macOS, and the only one officially supported by Apple. You’re encouraged but not restricted to use it, and you can use some alternatives such as Jetbrains’ AppCode. In order to install Xcode, simply download Xcode on the Mac App Store.

Project Setup

There is a common controversy regarding whether to write the UI in pure code or use storyboards to build it in a more graphical way (drag-and-drop). Both are know to work well depending on the use case and the project size.

There are some considerations to take in account if you use Storyboards: