GitHub - jVirus/ios-learning-materials: Curated list of articles, web-resources,...
source link: https://github.com/jVirus/ios-learning-materials
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
ios-learning-materials
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 ?
Content
- 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
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
- 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
Resources
Documentation ?
- 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
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
- 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
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
- Creating a Custom Core ML Model Using Python and Turi Create
- Beginning Machine Learning with Keras & Core ML
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
- 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
Video ?
Code ?
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
- 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
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
- 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?
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 ?
MapKit
Asset Catalog
Playground
UIKit
Storyboards
- Storyboards Tutorial for iOS: Part 1
- Storyboards Tutorial for iOS: Part 2
- iOS 9: Staying Organized with Storyboard References
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
UICollectionView
UITableView
- iOS: How to build a Table View with multiple cell types
- Forget datasource & delegate: a new approach to UITableView
UIStackView
UIImageView
UISplitViewController
Auto Layout
UI & Design
- Replicating Apple Design Awarded Applications
- All Thumbs, Why Reach Navigation Should Replace the Navbar in iOS Design
- Development Tutorial for iPhone X
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
- iOS Animation Tutorial: Getting Started
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
- 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
Custom Components
- 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
Drag & Drop
Core Animation
- 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
- 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
Core Location
Core Data
- Getting Started With Core Data
- Multiple Managed Object Context With Code Data
- NSIncrementalStore Tutorial for iOS: Getting Started
Core Motion
- IOS DEVICE MOTION: APPS WITH ATTITUDE
- CMDeviceMotion
- The Art of Core Motion in iOS
- iOS Sensors & Core Motion
- CoreMotion Controlled 3D Sketching on an iPhone with Swift
Code ?
- iOS Signature Capture Demo: Smooth Lines Drawing
- Smooth line UIView
- Beatiful and fast smooth line drawing algorithm for iOS
HealthKit
CloudKit
In-App Purchase
Official Documentation
NLP
Swift
Resources
Strings
Standard Data Structures
Associated Types
Standart Protocols
Advances In 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/
- Encoding, Decoding and Serialization in Swift 4
- Single Value Codable
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
- KVO In iOS 11
Switch
Optionals
Collections
Floating Point
Closures
Other
Xcode
Internationalization
Security
Payments
Algorithms and Data Structures
Data Structures
- 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
Algorithms
Sorting
- Swift Algorithm Club: Swift Merge Sort
- Algorithms for Beginners — Bubble Sort, Insertion Sort, Merge Sort
Searching
- Swift Algorithm Club: Boyer Moore String Search Algorithm
- Swift Algorithm Club: Swift Breadth First Search
Graph
- Swift Algorithm Club: Minimum Spanning Tree with Prim’s Algorithm
- Swift Algorithm Club: Swift Dijkstra’s Algorithm
Networking
- Network Layers in Swift
- How to write Networking Layer in Swift (2nd version)
- Getting Started with Moya
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?
- Conditionally embed your dynamic frameworks
- Getting Started with Reusable Frameworks for iOS Development
Debugging
App Submission
- 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
Git
- A successful Git branching model
- Introducing GitFlow
- Git-flow cheatsheet
- Branching
- Git - the simple guide
Asynchronous Programming
- Comparative Asynchronous Programming
- Reducers: Dealing With Asynchrony
- Concurrency in Swift: One possible approach
- Parallel programming with Swift: Operations
Functional Programming
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?
- Separation Of Concerns Using Protocols In Swift
Architecture And Design Patterns
Overview
- 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
Singleton
Async
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
Factory Method
Command
Redux
Coordinator
Strategy
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
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
- Why you shouldn’t use delegates in Swift
- Understanding Delegates and Delegation in Swift 4
Dependency Injection
Coroutines
SOLID
Coordinator and FlowController
Composition
Computer Graphics
Foundation
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
- 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
Algorithms and Approaches
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
- Beginning Machine Learning with scikit-learn
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
Video ?
- Deep Learning: Keras Short Tutorial
- Integrating Keras & TensorFlow: The Keras workflow, expanded (TensorFlow Dev Summit 2017)
- Deep Learning Frameworks Compared
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
CocoaPods
Carthage
Design
- 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.
UX
- 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.
Framworks
Realm
- Designing the schema of Realm effectively, and other Realm tips
- Correct way to retrieve a single object from Realm database
- What are Primary Keys?
Firebase
Chameleon
AWS Pinpoint
Interview
- Software Engineering: Interviews
- Creator of Pixaki and Full-Time Indie iOS Dev: A Top Dev Interview With Luke Rogers
Other
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK