iOS Development Resources From Scratch to App Store

Setup

Remove storyboard: Link
gitignore

Package

Package Manager

SPM

Common Packages

SnapKit

A Swift Autolayout DSL for iOS & OS X

Kingfisher

A lightweight, pure-Swift library for downloading and caching images from the web.

RxSwift

Reactive Programming in Swift

R.swift

Strong typed, autocompleted resources like images, fonts and segues in Swift projects

Tools

UI

Lookin

You can inspect and modify views in iOS app via Lookin, just like UI Inspector in Xcode, or another app called Reveal.

Code

SwiftLint

A tool to enforce Swift style and conventions.

SwiftFormat

SwiftFormat is a code library and command-line tool for reformatting Swift code on macOS, Linux or Windows.

Build

Xcode-Build-Server

This repo aims to integrate xcode with sourcekit-lsp and support all the languages (swift, c, cpp, objc, objcpp) xcode supports, so I can develop iOS with my favorate editor.

xcbeautify

xcbeautify is a little beautifier tool for xcodebuild.

Design

Human Interface Guidelines

Coding Style

Trim trailing spaces in Xcode

Git

Commit messages convention

Distribution

fastlane

Change version code, then fastlane beta

1
2
3
bundle exec fastlane beta
bundle exec fastlane generate_icon
bundle exec fastlane validate

Fastfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
default_platform(:ios)

platform :ios do
desc "Push a new beta build to TestFlight"
lane :beta do
# Change to project root for scripts
Dir.chdir("..") do
# Check localization completeness
sh("python3 Scripts/check_localization.py")
end

# Increment build number
# increment_build_number(xcodeproj: "ProjectName.xcodeproj")

# Build and upload
# Use export_method: "app-store" for TestFlight
# With automatic signing, Xcode will automatically use/create the App Store distribution profile
# Note: Make sure you've opened the project in Xcode at least once so it can download
# the App Store distribution provisioning profile from your Apple Developer account
build_app(
scheme: "ProjectName",
export_method: "app-store"
)
# upload_to_testflight
end

desc "Generate app icon from source image"
lane :generate_icon do
appicon(
appicon_image_file: 'fastlane/metadata/app_icon.png',
appicon_devices: %i[ipad iphone ios_marketing],
appicon_path: 'ProjectName/Assets.xcassets'
)
end

desc "Run pre-build validations"
lane :validate do
# Change to project root for scripts
Dir.chdir("..") do
sh("python3 Scripts/check_localization.py")
end
end
end

Apple

App Store Preview Images

View App data: https://developer.apple.com/forums/thread/21660
Disable dark mode: https://sarunw.com/posts/how-to-disable-dark-mode-in-ios/
Hit-Testing: https://smnh.me/hit-testing-in-ios
Use Cursor for iOS development: https://dimillian.medium.com/how-to-use-cursor-for-ios-development-54b912c23941