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 🤓:octocat:
- About
- ARKit
- Vision Framework
- CoreML
- SceneKit
- SpriteKit
- Metal
- AVFounation
- ReplayKit
- MapKit
- Asset Catalog
- Playground
- UIKit
- Core Animation
- Core Graphics
- Core Location
- Core Motion
- Core Data
- HealthKit
- CloudKit
- In-App Purchase
- NLP
- Swift
- Xcode
- Internationalization
- Security
- Payments
- Algorithms and Data Structures
- Networking
- Frameworks Development
- Debugging
- App Submission
- Git
- Asynchronous Programming
- Functional Programming
- Protocol-Oriented Programming
- Architecture And Design Patterns
- Computer Graphics
- iOS Development
- Machine Learning
- Clean Code
- App Distribution
- CocoaPods
- Carthage
- Framworks
- Design
- UX
- Interview
- Other
- 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
- ARKit and CoreLocation: Part One
- ARKit and CoreLocation: Part Two - Navigation With Linear Algebra and Trig
- ARKit Adventures Making A Remote Control Drone
- Augmented Reality and ARKit Tutorial
- Why I Love ARKit for Apple iOS 11
- Building a Simple ARKit Demo with SceneKit in Swift 4 and Xcode 9
- Building an AR app with ARKit and Scenekit
- Build ARKit Application with Unity
- Augmented Reality With ARKit: Detecting Planes
- ARKit Tutorial: Understanding and Implementing 3D Objects
- Animating a 3D model in AR with ARKit and Mixamo
- Importing 3D Models for ARKit
- ARKit Tutorial: Detecting Horizontal Planes and Adding 3D Objects with SceneKit
- ARKit Tutorial: Understanding Physics by Launching a Rocketship
- ARKit Tutorial: Light Estimation with Ambient Intensity and Color Temperature
- ARKit Official Documentation
- Understanding augmented reality
- Building a Basic AR Experience
- Displaying an AR experience with Metal
- Official Human Interface Design Guidelines For Augmented Reality
- 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
- ARKit Graffity
- FaceRecognition in ARKit
- CoreML in ARKit
- SceneKitVideoRecorder
- ARKit Navigation Demo
- ARKit-Sampler
- Measure
- Ruler
- Twilio Video chat w/ AR
- ARPlayer
- ARVoxelKit
- ARKitSpitfire
- ARInvaders
- ARKitAirport
- AR-FlatWeatherDiplay
- AR-Planes
- Solar System with ARKit on Swift
- This library uses ARKit Face Tracking in order to catch a user's smile.
- Make your ARKit experiment compatible with mobile VR/AR headsets*. An example setup using SceneKit
- Findme. Using ARKit to find me
- ARBottleJump
- Superimposes your image into a 3D world using Metal+Arkit
- 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
- 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
- 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
- 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
- Creating a Custom Core ML Model Using Python and Turi Create
- Beginning Machine Learning with Keras & Core ML
- 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
- SceneKit - From Zero to Hero, Part II
- 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
- How to Make a Game Like Can Knockdown
- SceneKit: Deformable Terrain
- Dynamically load Collada files in SceneKit at runtime
- How do I efficiently map a high-res SKScene in SceneKit?
- SCNCamera limit arcball rotation
- Rotate SCNCamera node looking at an object around an imaginary sphere
- Getting Started with 2048!
- Changing programmatically the text of a 3D TextNode in SceneKit using Swift
- SCN shader modifier in metal - pass uniform to shader
- Crossfade material property textures
- 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
- Touch event and physics field
- SpriteKit game scene transitions with shaders
- SpriteKit Tutorial: Create an Interactive Children’s Book with SpriteKit and Swift 3
- Createa An Interactive Childrend's Book With SpriteKit and Swift 3
- SpriteKit Text Disintegration
- Drawing gradients in SpriteKit
- How to handle a lot of textures in memory
- Crashy Plane - Game
- SpriteKit Animations and Texture Atlases in Swift
- Understanding Shaders in SpriteKit
- Making a Pixel Shader for iOS8 with Sprite Kit
- Fragment Shaders with SpriteKit
- SpriteKit shaders
- 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
- DATA-PARALLEL PROGRAMMING WITH METAL AND SWIFT FOR IPHONE/IPAD GPU
- EXAMPLE OF SHARING MEMORY BETWEEN GPU AND CPU WITH SWIFT AND METAL FOR IOS8
- Metal Performance Shaders in Swift
- Do I need multiple RenderPipelines to have multiple shaders?
- 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
- Storyboards Tutorial for iOS: Part 1
- Storyboards Tutorial for iOS: Part 2
- iOS 9: Staying Organized with Storyboard References
- 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
- iOS: How to build a Table View with multiple cell types
- Forget datasource & delegate: a new approach to UITableView
- Replicating Apple Design Awarded Applications
- All Thumbs, Why Reach Navigation Should Replace the Navbar in iOS Design
- Development Tutorial for iPhone X
- Creating an Immersive User Experience with Haptic Feedback in iOS
- Haptic Feedback makes you vibrate!
- 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
- 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
- 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
- iOS Animation Tutorial: Getting Started
- 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
- iOS Animation Tutorial: Custom View Controller Presentation Transitions
- Introduction to Custom View Controller Transitions and Animations
- How To Make A UIViewController Transition Animation Like in the Ping App
- Creating a 3D Tag Cloud
- Building a Tinder-esque Card Interface
- Stop Xcode from constantly rebuilding your project because of @IBDesignable
- How to Create Your Own Slide-Out Navigation Panel in Swift
- CALayer Tutorial: Getting Started
- How To Implement A Circular Image Loader Animation with CAShapeLayer
- Core Animation gems: Using replicator layers in Swift
- Building your own chart in iOS — Part 1: Bar chart
- CALayer Tutorial: Getting Started
- Controlling Animation Timing
- Core Graphics Tutorial Part 1: Getting Started
- Core Graphics Tutorial Part 2: Gradients and Contexts
- Core Graphics Tutorial Part 3: Patterns and Playgrounds
- Drawing smooth lines with cocos2d ios inspired by Paper
- Smooth Freehand Drawing on iOS
- iOS: Make a real-time drawing app
- Draw smooth curves through a set of points in iOS
- How to draw smooth lines in iOS apps
- How To Make A Simple Drawing App with UIKit and Swift
- Let's build: Freehand Drawing in iOS - Part 1
- Let's build: Freehand Drawing in iOS - Part 2
- Let's build: Freehand Drawing in iOS - Part 3
- How to Make a Line Drawing Game with Sprite Kit
- Getting Started With Core Data
- Multiple Managed Object Context With Code Data
- NSIncrementalStore Tutorial for iOS: Getting Started
- IOS DEVICE MOTION: APPS WITH ATTITUDE
- CMDevice​Motion
- The Art of Core Motion in iOS
- iOS Sensors & Core Motion
- CoreMotion Controlled 3D Sketching on an iPhone with Swift
- iOS Signature Capture Demo: Smooth Lines Drawing
- Smooth line UIView
- Beatiful and fast smooth line drawing algorithm for iOS
- Error Handling (Swift 3)
- 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/
- Encoding, Decoding and Serialization in Swift 4
- Single Value Codable
- Lazy Initialization with Swift
- Using lazy properties in Swift
- Swift Lazy Initialization with Closures
- Stored Properties In Swift Extensions
- Bindings and KVO alternatives
- KVO In iOS 11
Â
- Swift + Keywords (V 3.0.1)
- What’s New in Swift 4 by Example
- Solving the binding problem with Swift
- Swift Algorithm Club: Swift Linked List Data Structure
- Swift Algorithm Club: Swift Queue Data Structure
- Swift Algorithm Club: Swift Trie Data Structure
- Swift Algorithm Club: Swift Stack Data Structure
- Swift Algorithm Club: Swift Binary Search Tree Data Structure
- Swift Algorithm Club: Heap and Priority Queue Data Structure
- Swift Algorithm Club: Graphs with Adjacency List
- Swift Algorithm Club: Swift Merge Sort
- Algorithms for Beginners — Bubble Sort, Insertion Sort, Merge Sort
- Swift Algorithm Club: Boyer Moore String Search Algorithm
- Swift Algorithm Club: Swift Breadth First Search
- Swift Algorithm Club: Minimum Spanning Tree with Prim’s Algorithm
- Swift Algorithm Club: Swift Dijkstra’s Algorithm
- 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?
- Conditionally embed your dynamic frameworks
- How to Submit An App to Apple: From No Account to App Store – Part 1
- How to Submit An App to Apple: From No Account to App Store – Part 2
- A successful Git branching model
- Introducing GitFlow
- Git-flow cheatsheet
- Branching
- Git - the simple guide
- Comparative Asynchronous Programming
- Reducers: Dealing With Asynchrony
- Concurrency in Swift: One possible approach
- Parallel programming with Swift: Operations
- Introducing Protocol-Oriented Programming in Swift 3
- Introduction to Protocol Oriented Programming in Swift
- How Protocol Oriented Programming in Swift saved my day?
- Separation Of Concerns Using Protocols In Swift
- Design Patterns on iOS using Swift – Part 1/2
- Design Patterns on iOS using Swift – Part 2/2
- Using child view controllers as plugins in Swift
- 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
- Looking at Model-View-Controller in Cocoa
- Do MVC like it’s 1979
- [MVC](http://codeplease.io/2017/11/19/mvc/]
- MVVM-C with Swift
- MVVM-C A simple way to navigate
- UIKonf 2016 – Day 1– Steve "Scotty" Scott – MVVM-C In Practice
- 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
- 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
- Why you shouldn’t use delegates in Swift
- Understanding Delegates and Delegation in Swift 4
- 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
- Vertex displacement with a noise function using GLSL and three.js
- Make a Splash With Dynamic 2D Water Effects
- Real-time oil painting with OpenGL
- Exploring Metaballs and Isosurfaces in 2D
- Ray Marching and Signed Distance Functions
- How do Raymarch shaders work?
- Free Penumbra Shadows For Raymarching Distance Fields
- 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
- 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
- Beginning Machine Learning with scikit-learn
- 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
- 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
- Deep Learning: Keras Short Tutorial
- Integrating Keras & TensorFlow: The Keras workflow, expanded (TensorFlow Dev Summit 2017)
- Deep Learning Frameworks Compared
- 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 Design & Development Conference
- 9 Major UI mistakes that will kill your Apps!
- The ultimate guide for mobile developers, who want to design.
- The designer’s guide to mobile — shifting design across platforms
- Getting Typography Right in Digital Design
- Design Principles: a guide to less shitty feedback
- UX Design Patterns for Mobile Apps: Which and Why
- Creative Motion: 12 Concepts of Interface Animation.
- Honing Your Mobile Apps With Savvy User Research
- UXPlanet is a huge resource that contains everything you need to know about user experince.
- Ray Wenderlich is a one of the biggest iOS communities out there. They have a lot of free content as well as paid books, videos and tutorials. The quality of the material is one of the best that you can find.
- Designing the schema of Realm effectively, and other Realm tips
- Correct way to retrieve a single object from Realm database
- What are Primary Keys?