![Page 1: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/1.jpg)
#WWDC17
© 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.
Eliza Block, UIKit Josh Shaffer, UIKit
•What’s New in Cocoa Touch • Session 201
App Frameworks
![Page 2: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/2.jpg)
•Productivity •UI refinements •API enhancements
![Page 3: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/3.jpg)
•Productivity •UI refinements •API enhancements
![Page 4: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/4.jpg)
•Drag and Drop
![Page 5: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/5.jpg)
![Page 6: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/6.jpg)
![Page 7: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/7.jpg)
Drag and Drop Enabling drags
![Page 8: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/8.jpg)
Drag and Drop Enabling drags
![Page 9: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/9.jpg)
Drag and Drop Enabling drags
let drag = UIDragInteraction(delegate: self) iconView.addInteraction(drag)
![Page 10: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/10.jpg)
Drag and Drop Enabling drags
let drag = UIDragInteraction(delegate: self) iconView.addInteraction(drag)
![Page 11: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/11.jpg)
Drag and Drop Enabling drags
let drag = UIDragInteraction(delegate: self) iconView.addInteraction(drag)
UIDragInteractionDelegate • Provide data for dragged item • Customize lift animation • Customize preview
![Page 12: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/12.jpg)
Drag and Drop Enabling drops
![Page 13: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/13.jpg)
Drag and Drop Enabling drops
![Page 14: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/14.jpg)
Drag and Drop Enabling drops
let drop = UIDropInteraction(delegate: self) iconContainerView.addInteraction(drop)
![Page 15: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/15.jpg)
Drag and Drop Enabling drops
let drop = UIDropInteraction(delegate: self) iconContainerView.addInteraction(drop)
UIDropInteractionDelegate • Update UI as drag moves • Receive data on drop • Customize drop animation
![Page 16: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/16.jpg)
Drag and Drop Easy to adopt
![Page 17: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/17.jpg)
Drag and Drop Easy to adopt
Built-in support • TableView, CollectionView, TextView, TextField, WebView
![Page 18: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/18.jpg)
Drag and Drop Easy to adopt
Built-in support • TableView, CollectionView, TextView, TextField, WebView
Integration with UIPasteConfiguration
![Page 19: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/19.jpg)
Drag and Drop Easy to adopt
Introducing Drag and Drop Hall 3 Tuesday 11:20AM
Mastering Drag and Drop Executive Ballroom Wednesday 11:00AM
Drag and Drop with Collection and Table View Hall 2 Thursday 9:00AM
Data Delivery with Drag and Drop Hall 2 Thursday 10:00AM
Built-in support • TableView, CollectionView, TextView, TextField, WebView
Integration with UIPasteConfiguration
![Page 20: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/20.jpg)
•File Management
![Page 21: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/21.jpg)
![Page 22: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/22.jpg)
File Management UIDocumentBrowserViewController
![Page 23: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/23.jpg)
File Management UIDocumentBrowserViewController
class UIDocumentBrowserViewController { init(forOpeningFilesWithContentTypes: [String]?) var delegate: UIDocumentBrowserViewControllerDelegate?
}
![Page 24: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/24.jpg)
Highly customizable
File Management UIDocumentBrowserViewController
class UIDocumentBrowserViewController { init(forOpeningFilesWithContentTypes: [String]?) var delegate: UIDocumentBrowserViewControllerDelegate?
}
![Page 25: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/25.jpg)
Highly customizable
Access to local documents and cloud storage
File Management UIDocumentBrowserViewController
class UIDocumentBrowserViewController { init(forOpeningFilesWithContentTypes: [String]?) var delegate: UIDocumentBrowserViewControllerDelegate?
}
![Page 26: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/26.jpg)
Highly customizable
Access to local documents and cloud storage
Be sure to coordinate file access
File Management UIDocumentBrowserViewController
class UIDocumentBrowserViewController { init(forOpeningFilesWithContentTypes: [String]?) var delegate: UIDocumentBrowserViewControllerDelegate?
}
![Page 27: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/27.jpg)
Highly customizable
Access to local documents and cloud storage
Be sure to coordinate file access• NSFileCoordinator or UIDocument
File Management UIDocumentBrowserViewController
class UIDocumentBrowserViewController { init(forOpeningFilesWithContentTypes: [String]?) var delegate: UIDocumentBrowserViewControllerDelegate?
}
![Page 28: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/28.jpg)
Highly customizable
Access to local documents and cloud storage
Be sure to coordinate file access• NSFileCoordinator or UIDocument
File Management UIDocumentBrowserViewController
Building Great Document-Based Apps in iOS 11 Hall 2 Thursday 1:50PM
class UIDocumentBrowserViewController { init(forOpeningFilesWithContentTypes: [String]?) var delegate: UIDocumentBrowserViewControllerDelegate?
}
![Page 29: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/29.jpg)
•Productivity •UI refinements •API enhancements
![Page 30: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/30.jpg)
![Page 31: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/31.jpg)
![Page 32: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/32.jpg)
![Page 33: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/33.jpg)
![Page 34: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/34.jpg)
class UINavigationBar { var prefersLargeTitle: Bool
}
Enabling Large Titles
![Page 35: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/35.jpg)
class UINavigationBar { var prefersLargeTitle: Bool
}
Enabling Large Titles
class UINavigationItem { var largeTitleDisplayMode: LargeTitleDisplayMode
}
![Page 36: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/36.jpg)
Enabling Unified Search
class UINavigationItem { var searchController: UISearchController?
}
![Page 37: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/37.jpg)
![Page 38: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/38.jpg)
![Page 39: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/39.jpg)
![Page 40: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/40.jpg)
![Page 41: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/41.jpg)
![Page 42: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/42.jpg)
![Page 43: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/43.jpg)
![Page 44: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/44.jpg)
![Page 45: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/45.jpg)
safeAreaInsets.top
![Page 46: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/46.jpg)
safeAreaInsets.top
![Page 47: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/47.jpg)
safeAreaInsets.bottom
safeAreaInsets.top
![Page 48: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/48.jpg)
Safe Area Insets
class UIView {
// auto layout var safeAreaLayoutGuide: UILayoutGuide { get }
// manual layout var safeAreaInsets: UIEdgeInsets { get }
func safeAreaInsetsDidChange()
}
![Page 49: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/49.jpg)
![Page 50: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/50.jpg)
![Page 51: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/51.jpg)
safeAreaInsets.top
![Page 52: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/52.jpg)
Safe Area Insets
class UIScrollView {
var contentInsetAdjustmentBehavior: UIScrollViewContentInsetAdjustmentBehavior
var adjustedContentInset: UIEdgeInsets { get }
}
![Page 53: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/53.jpg)
![Page 54: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/54.jpg)
![Page 55: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/55.jpg)
Swipe Actions
class UISwipeActionsConfiguration {
init(actions: [UIContextualAction])
var performsFirstActionWithFullSwipe: Bool
}
class UIContextualAction {
init(style: Style, title: String?, handler: UIContextualActionHandler)
}
![Page 56: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/56.jpg)
![Page 57: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/57.jpg)
Separator Insets
class UITableView {
var separatorInsetReference: UITableViewSeparatorInsetReference
}
![Page 58: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/58.jpg)
![Page 59: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/59.jpg)
Updating Your App for iOS 11 Hall 3 Tuesday 4:10PM
Design Studio Shorts 2 Hall 3 Thursday 1:50PM
![Page 60: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/60.jpg)
•Productivity •UI refinements •API enhancements
![Page 61: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/61.jpg)
•Swift 4 and Foundation
![Page 62: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/62.jpg)
Swift 4 and Foundation Archiving Swift native types
enum Animal case chicken case cow case sheep }
struct Farm let name: String let animals: [Animal] }
{ {
![Page 63: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/63.jpg)
Swift 4 and Foundation Archiving Swift native types
enum Animal case chicken case cow case sheep }
struct Farm let name: String let animals: [Animal] }
{: Codable : Codable {
![Page 64: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/64.jpg)
NSCoding
Swift 4 and Foundation Archiving Swift native types
enum Animal case chicken case cow case sheep }
struct Farm let name: String let animals: [Animal] }
{: Codable : Codable {
![Page 65: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/65.jpg)
NSCoding
JSON
Swift 4 and Foundation Archiving Swift native types
enum Animal case chicken case cow case sheep }
struct Farm let name: String let animals: [Animal] }
{: Codable : Codable {
![Page 66: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/66.jpg)
NSCoding
JSON
Property lists
Swift 4 and Foundation Archiving Swift native types
enum Animal case chicken case cow case sheep }
struct Farm let name: String let animals: [Animal] }
{: Codable : Codable {
![Page 67: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/67.jpg)
Swift 4 and Foundation Key paths
![Page 68: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/68.jpg)
New KeyPath type • Literal syntax • Getters and setters
Swift 4 and Foundation Key paths
![Page 69: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/69.jpg)
New KeyPath type • Literal syntax • Getters and setters
let copresenterNameKeyPath = \Presenter.copresenter.name
Swift 4 and Foundation Key paths
![Page 70: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/70.jpg)
New KeyPath type • Literal syntax • Getters and setters
let copresenterNameKeyPath = \Presenter.copresenter.name
eliza[keyPath: copresenterNameKeyPath] // “Josh”
Swift 4 and Foundation Key paths
![Page 71: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/71.jpg)
New KeyPath type • Literal syntax • Getters and setters
let copresenterNameKeyPath = \Presenter.copresenter.name
eliza[keyPath: copresenterNameKeyPath] // “Josh”
eliza[keyPath: \.copresenter.name] // “Josh”
Swift 4 and Foundation Key paths
![Page 72: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/72.jpg)
Swift 4 and Foundation Old-fashioned KVO
private var myContext = 42
func startObserving() { let eliza = ... eliza.addObserver(self, forKeyPath: “copresenter”, ..., context: &myContext)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, ..., context: UnsafeMutableRawPointer?) { if context == &myContext { print(“Eliza’s co-presenter is now \(object?.copresenter.name)”) } else { super.observeValue(forKeyPath: keyPath, of: object, ..., context: context) }
}
![Page 73: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/73.jpg)
Swift 4 and Foundation New block-based KVO!
var token: NSKeyValueObservation? = nil
func startObserving() { let eliza = ... token = eliza.observe(\.copresenter) { (object, change) in print(“Eliza’s co-presenter is now \(object.copresenter.name)") }
}
![Page 74: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/74.jpg)
Swift 4 and Foundation New block-based KVO!
var token: NSKeyValueObservation? = nil
func startObserving() { let eliza = ... token = eliza.observe(\.copresenter) { (object, change) in print(“Eliza’s co-presenter is now \(object.copresenter.name)") }
}
What’s New in Foundation Hall 2 Wednesday 11:00AM
![Page 75: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/75.jpg)
•Deferring System Gestures
![Page 76: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/76.jpg)
![Page 77: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/77.jpg)
![Page 78: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/78.jpg)
![Page 79: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/79.jpg)
![Page 80: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/80.jpg)
class UIViewController {
func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge
}
![Page 81: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/81.jpg)
•Auto Layout
![Page 82: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/82.jpg)
Auto Layout and Scroll View Frame vs. content
![Page 83: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/83.jpg)
Auto Layout and Scroll View Frame vs. content
class UIScrollView {
var contentLayoutGuide: UILayoutGuide { get }
var frameLayoutGuide: UILayoutGuide { get }
}
![Page 84: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/84.jpg)
![Page 85: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/85.jpg)
![Page 86: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/86.jpg)
imageView.centerXAnchor.constraint(equalTo: scrollView.contentLayoutGuide.centerXAnchor)
![Page 87: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/87.jpg)
imageView.centerXAnchor.constraint(equalTo: scrollView.contentLayoutGuide.centerXAnchor)
imageView.centerYAnchor.constraint(equalTo: scrollView.contentLayoutGuide.centerYAnchor)
![Page 88: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/88.jpg)
•Dynamic Type
![Page 89: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/89.jpg)
![Page 90: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/90.jpg)
![Page 91: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/91.jpg)
![Page 92: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/92.jpg)
![Page 93: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/93.jpg)
Dynamic Type Sizing your text
![Page 94: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/94.jpg)
How do you choose a font appropriate for your user’s dynamic type size?
Dynamic Type Sizing your text
![Page 95: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/95.jpg)
How do you choose a font appropriate for your user’s dynamic type size?
Old way
let bodyFont = UIFont.preferredFont(forTextStyle: .body)
let titleFont = UIFont.preferredFont(forTextStyle: .title1)
Dynamic Type Sizing your text
![Page 96: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/96.jpg)
How do you choose a font appropriate for your user’s dynamic type size?
Old way
But what if your app needs a custom font?
let bodyFont = UIFont.preferredFont(forTextStyle: .body)
let titleFont = UIFont.preferredFont(forTextStyle: .title1)
Dynamic Type Sizing your text
![Page 97: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/97.jpg)
Dynamic Type UIFontMetrics
![Page 98: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/98.jpg)
Dynamic Type UIFontMetrics
Scale any font
let bodyMetrics = UIFontMetrics(forTextStyle: .body)
![Page 99: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/99.jpg)
Dynamic Type UIFontMetrics
Scale any font
let bodyMetrics = UIFontMetrics(forTextStyle: .body)
let standardFont = ... // any font you want, for standard type size
![Page 100: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/100.jpg)
Dynamic Type UIFontMetrics
Scale any font
let bodyMetrics = UIFontMetrics(forTextStyle: .body)
let standardFont = ... // any font you want, for standard type sizelet font = bodyMetrics.scaledFont(for: standardFont)
![Page 101: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/101.jpg)
Dynamic Type UIFontMetrics
Scale any font
let bodyMetrics = UIFontMetrics(forTextStyle: .body)
let standardFont = ... // any font you want, for standard type sizelet font = bodyMetrics.scaledFont(for: standardFont)
Can also scale arbitrary layout values
![Page 102: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/102.jpg)
Dynamic Type UIFontMetrics
Scale any font
let bodyMetrics = UIFontMetrics(forTextStyle: .body)
let standardFont = ... // any font you want, for standard type sizelet font = bodyMetrics.scaledFont(for: standardFont)
Can also scale arbitrary layout values
let titleMetrics = UIFontMetrics(forTextStyle: .title3)
let standardHeight = ... // button height for standard type size let height = titleMetrics.scaledValue(forValue: standardHeight)
![Page 103: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/103.jpg)
Dynamic Type AutoLayout
![Page 104: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/104.jpg)
Dynamic Type AutoLayout
Tuesday 12:30pm
Lunch with Josh
![Page 105: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/105.jpg)
Dynamic Type AutoLayout
Tuesday 12:30pm
Lunch with Josh
![Page 106: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/106.jpg)
Dynamic Type AutoLayout
Tuesday 12:30pm
Lunch with Josh
![Page 107: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/107.jpg)
Dynamic Type AutoLayout
Tuesday 12:30pm
Lunch with JoshTuesday 12:30pmLunch with Josh
![Page 108: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/108.jpg)
Dynamic Type AutoLayout
Tuesday 12:30pm
Lunch with JoshTuesday 12:30pmLunch with Josh
Tuesday 12:30pm
Lunch with Josh
![Page 109: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/109.jpg)
Dynamic Type AutoLayout
let topAnchor = topLabel.lastBaselineAnchorlet bottomAnchor = bottomLabel.firstBaselineAnchor
Tuesday 12:30pm
Lunch with JoshTuesday 12:30pmLunch with Josh
Tuesday 12:30pm
Lunch with Josh
![Page 110: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/110.jpg)
Dynamic Type AutoLayout
let topAnchor = topLabel.lastBaselineAnchorlet bottomAnchor = bottomLabel.firstBaselineAnchor
bottomAnchor.constraintEqualToSystemSpacing(below: topAnchor)
Tuesday 12:30pm
Lunch with JoshTuesday 12:30pmLunch with Josh
Tuesday 12:30pm
Lunch with Josh
![Page 111: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/111.jpg)
Dynamic Type AutoLayout
let topAnchor = topLabel.lastBaselineAnchorlet bottomAnchor = bottomLabel.firstBaselineAnchor
bottomAnchor.constraintEqualToSystemSpacing(below: topAnchor)
Tuesday 12:30pm
Lunch with JoshTuesday 12:30pm
Lunch with JoshTuesday 12:30pm
Lunch with Josh
![Page 112: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/112.jpg)
Works with VFL too
NSLayoutConstraints.constraintsWithVisualFormat( “V:|-[topLabel]-[bottomLabel]-|”, // ‘-‘ gives you system spacing options: [spacingBaselineToBaseline], metrics: nil, views: ...)
Dynamic Type AutoLayout
![Page 113: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/113.jpg)
Works with VFL too
NSLayoutConstraints.constraintsWithVisualFormat( “V:|-[topLabel]-[bottomLabel]-|”, // ‘-‘ gives you system spacing options: [spacingBaselineToBaseline], metrics: nil, views: ...)
And with UIStackViewstackView.baselineRelativeArrangement = true stackView.spacing = .spacingUseSystem
Dynamic Type AutoLayout
![Page 114: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/114.jpg)
Works with VFL too
NSLayoutConstraints.constraintsWithVisualFormat( “V:|-[topLabel]-[bottomLabel]-|”, // ‘-‘ gives you system spacing options: [spacingBaselineToBaseline], metrics: nil, views: ...)
And with UIStackViewstackView.baselineRelativeArrangement = true stackView.spacing = .spacingUseSystem
Dynamic Type AutoLayout
Building Apps with Dynamic Type Executive Ballroom Friday 1:50PM
![Page 115: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/115.jpg)
•Password AutoFill
![Page 116: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/116.jpg)
![Page 117: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/117.jpg)
![Page 118: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/118.jpg)
![Page 119: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/119.jpg)
![Page 120: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/120.jpg)
![Page 121: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/121.jpg)
![Page 122: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/122.jpg)
![Page 123: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/123.jpg)
Introducing Password AutoFill for Apps Grand Ballroom A Wednesday 9:00AM
![Page 124: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/124.jpg)
•Asset Catalogs
![Page 125: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/125.jpg)
Asset Catalogs Colors and icons
class UIColor {
init?(named name: String)
}
![Page 126: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/126.jpg)
Asset Catalogs Colors and icons
class UIColor {
init?(named name: String)
}
Wide gamut color support
![Page 127: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/127.jpg)
Asset Catalogs Colors and icons
class UIColor {
init?(named name: String)
}
Wide gamut color support
Wide gamut colors for icons
![Page 128: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/128.jpg)
Asset Catalogs Colors and icons
class UIColor {
init?(named name: String)
}
Wide gamut color support
Wide gamut colors for icons
App thinning for icons
![Page 129: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/129.jpg)
Asset Catalogs PDF-backed images
![Page 130: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/130.jpg)
Asset Catalogs PDF-backed images
![Page 131: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/131.jpg)
Asset Catalogs PDF-backed images
![Page 132: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/132.jpg)
Asset Catalogs PDF-backed images
Preserve vector data if
![Page 133: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/133.jpg)
Asset Catalogs PDF-backed images
Preserve vector data if• Image used at multiple sizes
![Page 134: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/134.jpg)
Asset Catalogs PDF-backed images
Preserve vector data if• Image used at multiple sizes• Symbolic glyph that resizes with dynamic type
![Page 135: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/135.jpg)
Asset Catalogs PDF-backed images
Preserve vector data if• Image used at multiple sizes• Symbolic glyph that resizes with dynamic type• Tab bar image
![Page 136: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/136.jpg)
![Page 137: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/137.jpg)
![Page 138: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/138.jpg)
![Page 139: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/139.jpg)
![Page 140: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/140.jpg)
•ProMotion
![Page 141: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/141.jpg)
Variable Refresh Rate Query screen’s refresh rate
class UIScreen {
var maximumFramesPerSecond: Int { get }
}
![Page 142: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/142.jpg)
Variable Refresh Rate Best practices for UIKit apps
![Page 143: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/143.jpg)
Variable Refresh Rate Best practices for UIKit apps
Optimize your app’s performance
![Page 144: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/144.jpg)
Variable Refresh Rate Best practices for UIKit apps
Optimize your app’s performance• Use Instruments to check your frame rate during scrolling and animations
![Page 145: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/145.jpg)
Variable Refresh Rate Best practices for Metal apps
![Page 146: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/146.jpg)
Variable Refresh Rate Best practices for Metal apps
Use flexible presentation times to ensure smooth playback
![Page 147: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/147.jpg)
Variable Refresh Rate Best practices for Metal apps
Use flexible presentation times to ensure smooth playback
Present frames less frequently to conserve power
![Page 148: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/148.jpg)
Variable Refresh Rate Best practices for Metal apps
Use flexible presentation times to ensure smooth playback
Present frames less frequently to conserve power
Use Xcode’s GPU Report feature to inspect performance characteristics
![Page 149: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/149.jpg)
Variable Refresh Rate Best practices for Metal apps
Use flexible presentation times to ensure smooth playback
Present frames less frequently to conserve power
Use Xcode’s GPU Report feature to inspect performance characteristics
Introducing Metal 2 Executive Ballroom Tuesday 1:50PM
![Page 150: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/150.jpg)
• What’s New
![Page 151: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/151.jpg)
•Localization
![Page 152: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/152.jpg)
![Page 153: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/153.jpg)
![Page 154: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/154.jpg)
![Page 155: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/155.jpg)
![Page 156: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/156.jpg)
![Page 157: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/157.jpg)
![Page 158: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/158.jpg)
![Page 159: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/159.jpg)
![Page 160: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/160.jpg)
Localization Guide https://developer.apple.com/internationalization
![Page 161: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/161.jpg)
More Informationhttps://developer.apple.com/wwdc17/201
![Page 162: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/162.jpg)
Related Sessions
Introducing Drag and Drop Hall 3 Tuesday 11:20AM
Mastering Drag and Drop Executive Ballroom Wednesday 11:00AM
Drag and Drop with Collection and Table View Hall 2 Thursday 9:00AM
Data Delivery with Drag and Drop Hall 2 Thursday 10:00AM
Building Great Document-Based Apps in iOS 11 Hall 2 Thursday 1:50PM
Updating Your App for iOS 11 Hall 3 Tuesday 4:10PM
Design Studio Shorts 2 Hall 3 Thursday 1:50PM
![Page 163: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/163.jpg)
Related Sessions
What’s New in Foundation Hall 2 Wednesday 11:00AM
Building Apps with Dynamic Type Executive Ballroom Friday 1:50PM
Introducing Password AutoFill for Apps Grand Ballroom A Wednesday 9:00AM
Introducing Metal 2 Executive Ballroom Tuesday 1:50PM
What’s New in International User Interfaces WWDC 2016
Increase Usage of Your App With Proactive Suggestions WWDC 2016
![Page 164: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/164.jpg)
Labs
UIKit and Drag and Drop Lab Technology Lab C Tue 1:50PM–4:10PM
Cocoa Touch Lab Technology Lab I Wed 3:10PM-6:00PM
UIKit and Collection View Lab Technology Lab B Thur 10:00AM-12:30PM
Cocoa Touch and Haptics Lab Technology Lab C Fri 12:00PM-1:50PM
Text and Fonts Lab Technology Lab H Thur 1:50PM-3:50PM
Accessibility and Dynamic Type Lab Technology Lab C Fri 12:30PM-4:00PM
Safari, WebKit, and AutoFill Lab Technology Lab D Wed 10:00AM-12:00PM
Foundation Lab Technology Lab C Wed 1:00PM-3:10PM
![Page 165: •What’s New in Cocoa Touch - Apple Inc.€¢What’s New in Cocoa Touch ... struct Farm let name: String let animals: [Animal] ... How do you choose a font appropriate for your](https://reader033.vdocument.in/reader033/viewer/2022051308/5adf1e797f8b9ad66b8c76c0/html5/thumbnails/165.jpg)