About
Curated list of articles, web-resources, tutorials, Stack Overflow
and Quora
Q&A, GitHub
code repositories and useful resources that may help you dig a little bit deeper into iOS. All the resources are split into sub-categories which simlifies navigation and management. Feel free to use and suggest something to learn (iOS related of course
You may see some non-directly related topics such as Computer Graphics
, Machine Learning
or Design Patterns
- these are actually related, in some ways, to iOS
development, but in a much broader and more specific way. With the addition of new materials, the structure of the document will be properly maintained meaning that it will become a reference book for learning. Happy evolving
Contnet
- About
- ARKit
- Vision Framework
- CoreML
- SceneKit
- SpriteKit
- Metal
- AVFounation
- ReplayKit
- CoreLocation
- MapKit
- CocoaPods
- Clean Code
- App Distribution
- Frameworks Development
- Git
- Asynchronous Programming
- Architecture And Design Patterns
- Asset Catalog
- Playgrounds
- UIKit
- Core Animation
- Swift
- HealthKit
- Computer Graphics
- iOS Development
- Machine Learning
- Design
ARKit
Reading
- ARKit by example
- ARKit getting started
- ARKit with multiple users
- ARKit hide objects behind walls
- ARKit introduction
- How do you attach an object to your camera position with ARKit Swift?
- The Essential Guide To UX For AR
- How I'm Learning ARKit
- ARKit + Vision: An intriguing combination
- Using ARKit with Metal
- Bike ride with ARKit: How I built it
- iOS ARKit Tutorial: Drawing in the Air with Bare Fingers
- Augmented Reality With ARKit For IOS
- ARKit Super Mario Brothers
Resources
Documentation
- ARKit Official Documentation
- Understanding augmented reality
- Building a Basic AR Experience
- Displaying an AR experience with Metal
Code
- Lava Project
- Example App with horizontal planes and physics cubes
- Example App that allows to draw in 3D space
- Shooter App
- Fully interactable Tic Tac Toe App
- Line drawing App
- Example by Apple that demostrates how to place virtual objects in augmented reality
- Classic Tetris App
- Cubes in Space
- AR Trees
- Create an anchor on the QR marker plane
- This is an ARKit project that demonstrates drawing out a 3-dimensional box in the world, which can be rotated and resized from each of its faces
- Demo project demostrating how to build a AR measurment instrument
- Simple AR game made with ARKit and SpriteKit. Follow the tutorial at the Pusher blog
- MeasureThings
- Combines the high accuracy of AR with the scale of GPS data.
- ARPaint
- ARKit Occlusion
- Shell Game built with ARKit and SceneKit
- Lovely Augmented Reality Charts for iOS
Video
- Learn how to place objects in the world such as a cube and cup using ARKit, we go over the basics of ARKit
- Swift ARKit (Augmented Reality) Tutorial
Vision framework
Reading
- iOS 11 Tutorial: Vision framework
- Core ML and Vision: Machine Learning in iOS 11 Tutorial
- Native Machine Learning and Machine Vision in iOS 11
- Swift World: What’s new in iOS 11 — Vision
- Using Vision Framework for Text Detection in iOS 11
- Getting Started With Vision Framework
- FACE AND FACE’S LANDMARKS DETECTION USING VISION FRAMEWORK IN IOS 11
Code
- Face Cropper: Crop faces, inside of your image, with iOS 11 Vision api.
- Hello Vision: Vision framework example
- iOS11 demo application for flower classification
- iOS11 demo application for dominant objects detection
Video
CoreML
- Core ML and Vision: Machine Learning in iOS 11 Tutorial
- Native Machine Learning and Machine Vision in iOS 11
- IOS Introduction to Core ML: Building a Simple Image Recognition App
- Creating a Simple Game With Core ML in Swift 4
- A Beginner’s Guide to Core ML Tools: Converting a Caffe Model to Core ML Format
- Apple Machine Learning Journal
- iOS 11: Machine Learning for everyone
- Bringing Machine Learning to your iOS Apps
🤖 📲 - Pros and cons of iOS machine learning APIs
SceneKit
- Physically Based Rendering Using the New iOS 10 SceneKit
- How to get the real position of a sub node in SceneKit after rotation?
- Transfer global to local node position in SceneKit
- SCNNode
- 3D with SceneKit
- The math behind transforms
- SceneKit game architecture
- How to rotate object in a scene with pan gesture - SceneKit
- Introduction To SceneKit – Part 1
- Introduction To SceneKit – Part 2
- Introduction To SceneKit – Part 3
- Custom SceneKit Geometry
- An Introduction to SceneKit: User Interaction, Animations & Physics
- Drag SceneKit Node Along X-Axis while maintaining velocity? Swift 3
- Scene Kit
- Rotate SCNCamera node looking at an object around an imaginary sphere
- Position a SceneKit object in front of SCNCamera's current orientation
- SceneKit Tutorial - From Zero to Hero Part I
- How to set up SceneKit collision detection
- SCNNode Bounding size and Scaling: Changing Size Of Physics Boulding Volume
- How to convert 2D point to 3D using SceneKit's unprojectPoint without having a depth value?
- SceneKit cube rotation with multiple UIPanGestureRecognizers
- SceneKit Cocoa Adding decals
- How To Add Objects In SceneKit Swift
- How To Turn Off Metal and Enable OpenGL Rendering in SceneKit
Video
SpriteKit
- Using SpriteKit to create animations in Swift
- SpriteKit and Inverse Kinematics with Swift
- SpriteKit with Swift: Orienting Sprites to a Location
- Drag and Drop Sprites
- An Introduction To Building A SpriteKit/UIKit Hybrid App
- How To Make A Game Like Color Switch with SpriteKit and Swift
- How To Make a Game Like Cut the Rope Using SpriteKit and Swift
- iOS 7 Sprite Kit: Setting Up Correct Scene Dimensions
Shaders
- Understanding Shaders in SpriteKit
- Making a Pixel Shader for iOS8 with Sprite Kit
- Fragment Shaders with SpriteKit
- SpriteKit shaders
Video
Metal
- What’s the big deal with Apples Metal API?
- Metal Tutorial with Swift 3 Part 1: Getting Started
- Metal Tutorial with Swift 3 Part 2: Moving to 3D
- LiquidFun Tutorial with Metal and Swift – Part 1
- LiquidFun Tutorial with Metal and Swift – Part 2
- How do I pixelate a scene with SceneKit and Metal, in Swift?
- Instanced Rendering in Metal
- Custom Metal Shaders
- A few SCNTechnique examples
- Textures and Samplers in Metal
- An Introduction to 3D Graphics with Metal in Swift
- A Brief Tour of Metal
Reosurces
Code
AVFoundation
ReplayKit
Reading
- iOS 9: An Introduction to ReplayKit
- Screen Recording Your App Using iOS ReplayKit for Bug Reporting
- ReplayKit
- How to record user videos using ReplayKit
- IOS 8 iPad App Crashes When UIActivityViewController Is Called
Video
CoreLocation
MapKit
CocoaPods
Clean Code
- Keeping
View Controllers
skinny and weakly-connected to models - Five sighns of code smell
- Managing View Controllers With Container View Controllers
- Avoiding Massive View Controllers by refactoring.
App Distribution
Frameworks Development
- An Introduction to Creating and Distributing Embedded Frameworks in iOS
- Creating iOS/OSX Frameworks: is it necessary to codesign them before distributing to other developers?
Git
- A successful Git branching model
- Introducing GitFlow
- Git-flow cheatsheet
- Branching
- Git - the simple guide
Asynchronous Programming
Architecture And Design Patterns
Overview
Async
Protocol-Oriented Programming
- Introducing Protocol-Oriented Programming in Swift 3
- Introduction to Protocol Oriented Programming in Swift
- How Protocol Oriented Programming in Swift saved my day?
Promise
- Promises in Swift: Asynchronous Promises: Proof of Concept in Swift
- Promise Pattern on Swift with PromiseKit And why you should migrate your async calls to them
- Under The Hood Of Futures And Promises In Swift
Redux
Coordinator
Resources
Flow
VIPER
MVC
MVC-N
MVVM-C
- MVVM-C with Swift
- MVVM-C A simple way to navigate
- UIKonf 2016 – Day 1– Steve "Scotty" Scott – MVVM-C In Practice
MVVM
- MVVM in Swift
- An Introduction to the MVVM Design Pattern
- Swift and ModelView-View-Model in Practive
- Sample application using MVVM in Swift
- MVVM in Swift
- Introduction to MVVM
- MVVM is Not Very Good
- Simplification Of IOS View Controllers: MVVM Or Presentation Controls?
- On MVVM, and Architecture Questions
- MVVM and Coordinator Patterns Together
Delegate
Multicast Delegate
Monad
Delegate
- Lightweight iOS View Controllers
- Apple’s Take on App Architecture
- Fluent Pagination - no more jumpy scrolling
- AdvancedCollectionView
- iOS: UITableView controller
- Nestable
- Advanced UITableViews Made Simple: YLTableView
- Typed, yet Flexible Table View Controller
- Complex table view state changes made easy
Asset Catalog
Playgrounds
UIKit
Storyboards
UIKit Dynamics
- UIKit Dynamics in Swift 2.0
- Creating a Magnetic Effect Between UI Components
- Attachment Behaviour Tutorial in iOS8 with Swift
- How to make custom UIView animations with UISnapBehavior and UIDynamicItemBehavior
- UIKit Dynamics Guide
UISearchController
Collection View
Stack View
Auto Layout
UI & Design
Haptic Feedback
- Creating an Immersive User Experience with Haptic Feedback in iOS
- Haptic Feedback makes you vibrate!
Touches and Gestures
- UIGestureRecognizer Tutorial: Getting Started
- Dragging Views with Gestures Tutorial in iOS8 with Swift
- Detecting user touch of UIView inside of UIScrollView
- How To Rotate a 3D Object Using Touches with OpenGL
- Event Handling Guide for UIKit Apps
- UIGestureRecognizer Getting Started
Notifications Framework (Local & Remote)
- Introduction to User Notifications Framework in iOS 10
- Basic Push Notifications in iOS 10 and Swift
- Push Notifications Tutorial: Getting Started
- Local and Remote Notifications Overview
Apple Pencil
Animations
- What’s New In UIKit Animations In Swift 4
- Creating Great Animations On iOS
- Building a declarative animation framework in Swift — Part 1
- Building a declarative animation framework in Swift — Part 2
- Prototyping Animated Transitions in Swift
- Prototyping Animations in Swift #1
- Prototyping Animations in Swift #2
Transitions
- Fantastic iOS Transitions Collection
- iOS Animation Tutorial: Custom View Controller Presentation Transitions
- Creating Custom UIViewController Transitions
- INTERACTIVE TRANSITIONS
- View Controller Transitions #1
- View Controller Transitions #2)
- View Controller Transitions #3
- View Controller Transitions
Custom Components
Core Animation
- CALayer Tutorial: Getting Started
- How To Implement A Circular Image Loader Animation with CAShapeLayer
Swift
Associated Types
Standart Protocols
KVC
Error handling
- Error Handling (Swift 3)
Encoding and Decoding
- Encoding and Decoding in Swift 4
- https://medium.com/compileswift/encoding-and-decoding-in-swift-4-f82114897862
- https://github.com/ole/whats-new-in-swift-4/blob/master/Whats-new-in-Swift-4.playground/Pages/Encoding%20and%20decoding.xcplaygroundpage/Contents.swift
- https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types
- http://benscheirman.com/2017/06/ultimate-guide-to-json-parsing-with-swift-4/
Properties
- Lazy Initialization with Swift
- Using lazy properties in Swift
- Swift Lazy Initialization with Closures
- Stored Properties In Swift Extensions
KVO and Bindings
- Bindings and KVO alternatives
Other
HealthKit
Computer Graphics
Rendering
- BASIC THEORY OF PHYSICALLY-BASED RENDERING
- PHYSICALLY-BASED RENDERING, AND YOU CAN TOO!
- Volumetric Rendering
- Volumetric Rendering: Raymarching
- Volumetric Rendering: Surface Shading
- Volumetric Rendering: Signed Distance Functions
- Volumetric Rendering: Ambient Occlusion
- Volumetric Rendering: Hard & Soft Shadows
- Volumetric Rendering: Volume Raycasting
Graphics Pipeline
OpenGL
Ray Marching
- Ray Marching and Signed Distance Functions
- How do Raymarch shaders work?
- Free Penumbra Shadows For Raymarching Distance Fields
iOS Development
- 14 must knows for an iOS developer
- On-Demand Resources in iOS Tutorial
- Learning Techniques for Programmers, by Programmers
- Projecting A Dynamic Decal onto a 3D Mesh
Machine Learning
Reading
- Keras: The Python Deep Learning library
- SET-UP YOUR MAC FOR DEEP LEARNING WITH PYTHON, TENSORFLOW AND KERAS
- Calculus on Computational Graphs: Backpropagation
- Getting started with TensorFlow on iOS
- Apple’s deep learning frameworks: BNNS vs. Metal CNN
- Convolutional neural networks on the iPhone with VGGNet
- Getting Started with Deep MNIST and TensorFlow on iOS
- Use TensorFlow and BNNS to Add Machine Learning to your Mac or iOS App
- Develop Your First Neural Network in Python With Keras Step-By-Step
- Keras Tutorial: The Ultimate Beginner’s Guide to Deep Learning in Python
- Keras Deep Learning with Apple’s CoreMLTools on iOS 11
Code
- Code exmaple uses TensorFlow to train a basic binary classifier on the Gender Recognition by Voice and Speech Analysis dataset
- "Hello world" in keras
- TensorFlow on iOS demo
Tools
- Anaconda - is the world’s most popular and trusted data science ecosystem.
- TensorFlow - An open-source software library for Machine Intelligence
- Caffe - Caffe is a deep learning framework made with expression, speed, and modularity in mind
- Keras - Deep Learning library for Python. Runs on TensorFlow, Theano, or CNTK.
- coremltools is a python package for creating, examining, and testing models in the .mlmodel format.
- 5 Genius Python Deep Learning Libraries
Videos
- Deep Learning: Keras Short Tutorial
- Integrating Keras & TensorFlow: The Keras workflow, expanded (TensorFlow Dev Summit 2017)
- Deep Learning Frameworks Compared