What s New in Cocoa for macos

Size: px
Start display at page:

Download "What s New in Cocoa for macos"

Transcription

1 Session #WWDC18 What s New in Cocoa for macos 209 Ali Ozer, Cocoa Frameworks Chris Dreessen, Cocoa Frameworks Jesse Donaldson, Cocoa Frameworks 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

2 API refinements Dark mode Layer backing Custom quick actions

3 API Refinements

4 API Refinements Continued clean-up Source compatible in Objective-C Migratable in Swift

5 100%

6 String Type Updates typedef NSString *NSTextEffectStyle NS_STRING_ENUM; typedef NSString *NSPasteboardName NS_EXTENSIBLE_STRING_ENUM; typedef NSString *NSImageName NS_EXTENSIBLE_STRING_ENUM;

7 String Type Updates typedef NSString *NSTextEffectStyle NS_STRING_ENUM; typedef NSString *NSPasteboardName NS_EXTENSIBLE_STRING_ENUM; typedef NSString *NSImageName NS_EXTENSIBLE_STRING_ENUM;

8 String Type Updates typedef NSString *NSTextEffectStyle NS_STRING_ENUM; typedef NSString *NSPasteboardName NS_EXTENSIBLE_STRING_ENUM; typedef NSString *NSImageName NS_EXTENSIBLE_STRING_ENUM;

9 String Type Updates typedef NSString *NSTextEffectStyle NS_STRING_ENUM; typedef NSString *NSPasteboardName NS_EXTENSIBLE_STRING_ENUM; typedef NSString *NSImageName NS_EXTENSIBLE_STRING_ENUM;

10 String Type Updates typedef NSString *NSTextEffectStyle NS_TYPED_ENUM; typedef NSString *NSPasteboardName NS_TYPED_EXTENSIBLE_ENUM; typedef NSString *NSImageName NS_EXTENSIBLE_STRING_ENUM;

11 String Type Updates typedef NSString *NSTextEffectStyle NS_TYPED_ENUM; typedef NSString *NSPasteboardName NS_TYPED_EXTENSIBLE_ENUM; typedef NSString *NSImageName NS_SWIFT_BRIDGED_TYPEDEF;

12 String Enumeration to String Type Swift 4 extension NSImage { public struct Name : Hashable, Equatable, RawRepresentable { public init(_ rawvalue: String) public init(rawvalue: String) } }

13 String Enumeration to String Type Swift 4 extension NSImage { public struct Name : Hashable, Equatable, RawRepresentable { public init(_ rawvalue: String) public init(rawvalue: String) } } Swift 4.2 extension NSImage { } public typealias Name = String

14 String Enumeration to String Type Swift 4 let image = NSImage(named: NSImage.Name("chameleon"))

15 String Enumeration to String Type Swift 4 let image = NSImage(named: NSImage.Name("chameleon"))

16 String Enumeration to String Type Swift 4 let image = NSImage(named: NSImage.Name("chameleon")) Swift 4.2 let image = NSImage(named: "chameleon")

17 String Enumeration to String Type Swift 4 let image = NSImage(named: NSImage.Name("chameleon")) Swift 4.2 let image = NSImage(named: "chameleon") open class NSImage { } public init?(named: NSImage.Name)

18 String Enumeration to String Type

19 String Enumeration to String Type NSAnimatablePropertyKey NSBrowser.ColumnsAutosaveName NSCollectionView.DecorationElementKind NSCollectionView.SupplementaryElementKind NSCollectionView.TransitionLayoutAnimatedKey NSColor.Name NSColorList.Name NSDataAsset.Name NSHelpManager.AnchorName NSHelpManager.BookName NSHelpManager.ContextHelpKey NSImage.Name NSNib.Name NSPageController.ObjectIdentifier NSPrintInfo.SettingKey

20 String Enumeration to String Type NSAnimatablePropertyKey NSBrowser.ColumnsAutosaveName NSCollectionView.DecorationElementKind NSCollectionView.SupplementaryElementKind NSCollectionView.TransitionLayoutAnimatedKey NSColor.Name NSColorList.Name NSDataAsset.Name NSHelpManager.AnchorName NSHelpManager.BookName NSHelpManager.ContextHelpKey NSImage.Name NSNib.Name NSPageController.ObjectIdentifier NSPrintInfo.SettingKey NSSearchField.RecentsAutosaveName NSServiceProviderName NSSound.Name NSSound.PlaybackDeviceIdentifier NSSplitView.AutosaveName NSStatusItem.AutosaveName NSStoryboard.Name NSStoryboard.SceneIdentifier NSStoryboardSegue.Identifier NSTableView.AutosaveName NSToolbar.Identifier NSTouchBar.CustomizationIdentifier NSWindow.FrameAutosaveName NSWindow.PersistableFrameDescriptor NSWindow.TabbingIdentifier

21 Common Prefixes

22 Common Prefixes typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSMiterLineJoinStyle, NSRoundLineJoinStyle, NSBevelLineJoinStyle };

23 Common Prefixes typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSMiterLineJoinStyle, NSRoundLineJoinStyle, NSBevelLineJoinStyle }; typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSLineJoinStyleMiter, NSLineJoinStyleRound, NSLineJoinStyleBevel };

24 Common Prefixes typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSMiterLineJoinStyle, NSRoundLineJoinStyle, NSBevelLineJoinStyle }; typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSLineJoinStyleMiter, NSLineJoinStyleRound, NSLineJoinStyleBevel };

25 Common Prefixes typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSMiterLineJoinStyle, NSRoundLineJoinStyle, NSBevelLineJoinStyle }; typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSLineJoinStyleMiter, NSLineJoinStyleRound, NSLineJoinStyleBevel };

26 Common Prefixes typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSMiterLineJoinStyle, NSRoundLineJoinStyle, NSBevelLineJoinStyle }; typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSLineJoinStyleMiter, NSLineJoinStyleRound, NSLineJoinStyleBevel }; Swift 4 public enum LineJoinStyle : UInt { case miterlinejoinstyle case roundlinejoinstyle case bevellinejoinstyle }

27 Common Prefixes typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSMiterLineJoinStyle, NSRoundLineJoinStyle, NSBevelLineJoinStyle }; typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSLineJoinStyleMiter, NSLineJoinStyleRound, NSLineJoinStyleBevel }; Swift 4 Swift 4.2 public enum LineJoinStyle : UInt { case miterlinejoinstyle case roundlinejoinstyle case bevellinejoinstyle } public enum LineJoinStyle : UInt { case miter case round case bevel }

28 Common Prefixes typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSMiterLineJoinStyle, NSRoundLineJoinStyle, NSBevelLineJoinStyle }; typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSLineJoinStyleMiter, NSLineJoinStyleRound, NSLineJoinStyleBevel }; Swift 4 Swift 4.2 public enum LineJoinStyle : UInt { case miterlinejoinstyle public enum LineJoinStyle : UInt { case miter case roundlinejoinstyle case bevellinejoinstyle case round case bevel } }

29 Common Prefixes

30 Common Prefixes NSBezierPath.ElementType NSBezierPath.LineCapStyle NSBezierPath.LineJoinStyle NSBezierPath.WindingRule NSDatePicker.ElementFlags NSDatePicker.Mode NSDatePicker.Style NSPrintInfo.PaginationMode

31 Formalized Protocols

32 Formalized Protocols NSObject (NSMenuValidation) - (BOOL)validateMenuItem:(NSMenuItem

33 Formalized Protocols NSObject (NSMenuValidation) - NSMenuItemValidation <NSObject> - (BOOL)validateMenuItem:(NSMenuItem

34 Formalized Protocols NSObject (NSMenuValidation) - NSMenuItemValidation <NSObject> - (BOOL)validateMenuItem:(NSMenuItem Swift 4 extension NSObject { } open func validatemenuitem( ) -> Bool

35 Formalized Protocols NSObject (NSMenuValidation) - NSMenuItemValidation <NSObject> - (BOOL)validateMenuItem:(NSMenuItem Swift 4 Swift 4.2 extension NSObject { } open func validatemenuitem( ) -> Bool public protocol NSMenuItemValidation { } func validatemenuitem( ) -> Bool

36 Formalized Protocols

37 Formalized Protocols NSColorChanging NSEditor NSEditorRegistration NSFontChanging NSMenuItemValidation NSPasteboardTypeOwner NSStandardKeyBindingResponding NSToolbarItemValidation NSViewLayerContentScaleDelegate NSViewToolTipOwner

38 Direct Instance Variable Access

39 Direct Instance Variable Access Deprecated

40 Direct Instance Variable Access Deprecated self->_frame

41 Direct Instance Variable Access Deprecated self->_frame self.frame

42 Formal Soft Deprecation

43 Formal Soft Deprecation Objective-C static const NSBoxType NSBoxOldStyle NS_DEPRECATED_MAC(10_0, API_TO_BE_DEPRECATED, "NSBoxOldStyle is discouraged in modern application design. It should be replaced with either NSBoxPrimary or NSBoxCustom.") = (NSBoxType)3;

44 Formal Soft Deprecation Objective-C static const NSBoxType NSBoxOldStyle NS_DEPRECATED_MAC(10_0, API_TO_BE_DEPRECATED, "NSBoxOldStyle is discouraged in modern application design. It should be replaced with either NSBoxPrimary or NSBoxCustom.") = (NSBoxType)3;

45 Formal Soft Deprecation Objective-C static const NSBoxType NSBoxOldStyle NS_DEPRECATED_MAC(10_0, API_TO_BE_DEPRECATED, "NSBoxOldStyle is discouraged in modern application design. It should be replaced with either NSBoxPrimary or NSBoxCustom.") = (NSBoxType)3; introduced: 10.0, deprecated: , message: "NSBoxOldStyle is discouraged in modern application design. It should be replaced with either NSBoxPrimary or NSBoxCustom.") public static let oldstyle: NSBox.BoxType

46 Formal Soft Deprecation Objective-C static const NSBoxType NSBoxOldStyle NS_DEPRECATED_MAC(10_0, API_TO_BE_DEPRECATED, "NSBoxOldStyle is discouraged in modern application design. It should be replaced with either NSBoxPrimary or NSBoxCustom.") = (NSBoxType)3; introduced: 10.0, deprecated: , message: "NSBoxOldStyle is discouraged in modern application design. It should be replaced with either NSBoxPrimary or NSBoxCustom.") public static let oldstyle: NSBox.BoxType

47 Formal Soft Deprecation

48 Formal Soft Deprecation typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSMiterLineJoinStyle, NSRoundLineJoinStyle, NSBevelLineJoinStyle }; typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSLineJoinStyleMiter, NSLineJoinStyleRound, NSLineJoinStyleBevel };

49 Formal Soft Deprecation typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSMiterLineJoinStyle, NSRoundLineJoinStyle, NSBevelLineJoinStyle }; typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSLineJoinStyleMiter, NSLineJoinStyleRound, NSLineJoinStyleBevel };

50 Formal Soft Deprecation typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSMiterLineJoinStyle, NSRoundLineJoinStyle, NSBevelLineJoinStyle }; typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSLineJoinStyleMiter, NSLineJoinStyleRound, NSLineJoinStyleBevel }; static const NSLineJoinStyle NSMiterLineJoinStyle NS_DEPRECATED_WITH_REPLACEMENT_MAC("NSLineJoinStyleMiter", 10_0, API_TO_BE_DEPRECATED) = NSLineJoinStyleMiter;

51 Formal Soft Deprecation typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSMiterLineJoinStyle, NSRoundLineJoinStyle, NSBevelLineJoinStyle }; typedef NS_ENUM(NSUInteger, NSLineJoinStyle) { NSLineJoinStyleMiter, NSLineJoinStyleRound, NSLineJoinStyleBevel }; static const NSLineJoinStyle NSMiterLineJoinStyle NS_DEPRECATED_WITH_REPLACEMENT_MAC("NSLineJoinStyleMiter", 10_0, API_TO_BE_DEPRECATED) = NSLineJoinStyleMiter;

52 NSButtLineCapStyle NSRoundLineCapStyle NSSquareLineCapStyle NSMiterLineJoinStyle NSRoundLineJoinStyle NSBevelLineJoinStyle NSNonZeroWindingRule NSEvenOddWindingRule NSMoveToBezierPathElement NSLineToBezierPathElement NSCurveToBezierPathElement NSClosePathBezierPathElement NSBox.borderType NSBoxSecondary NSBoxOldStyle NSCell.controlTint NSBackgroundStyleLight NSBackgroundStyleDark NSDraggingInfo.draggedImage NSColor.controlHighlightColor NSColor.controlLightHighlightColor NSColor.controlShadowColor NSColor.controlDarkShadowColor NSColor.scrollBarColor NSColor.knobColor NSColor.selectedKnobColor NSColor.windowFrameColor NSColor.selectedMenuItemColor NSColor.headerColor NSColor.secondarySelectedControlColor NSColor.alternateSelectedControlColor NSTextFieldAndStepperDatePickerStyle NSClockAndCalendarDatePickerStyle NSTextFieldDatePickerStyle NSHourMinuteDatePickerElementFlag NSHourMinuteSecondDatePickerElementFlag NSColor(for: NSControlTint) NSColor.controlAlternatingRowBackgroundColors NSTimeZoneDatePickerElementFlag NSYearMonthDatePickerElementFlag NSYearMonthDayDatePickerElementFlag NSEraDatePickerElementFlag NSAutoPagination NSFitPagination NSClipPagination NSTabView.controlTint NSVisualEffectMaterialAppearanceBased NSVisualEffectMaterialLight NSVisualEffectMaterialDark NSVisualEffectMaterialMediumLight NSVisualEffectMaterialUltraDark NSControlTintDidChangeNotification NSSingleDateMode NSRangeDateMode

53 Secure Coding

54 Secure Coding New APIs in NSKeyedArchiver and NSKeyedUnarchiver Enable Secure coding Error returns

55 open class NSKeyedUnarchiver : NSCoder { public init(forreadingfrom: Data) throws public static func unarchivedobject(ofclasses: [AnyClass], from: Data) throws -> Any? public static func unarchivedobject<decodedobjecttype>(ofclass: DecodedObjectType.Type, from: Data) throws -> DecodedObjectType? where DecodedObjectType : NSObject, DecodedObjectType : NSCoding }

56 open class NSKeyedUnarchiver : NSCoder { public init(forreadingfrom: Data) throws public static func unarchivedobject(ofclasses: [AnyClass], from: Data) throws -> Any? public static func unarchivedobject<decodedobjecttype>(ofclass: DecodedObjectType.Type, from: Data) throws -> DecodedObjectType? where DecodedObjectType : NSObject, DecodedObjectType : NSCoding }

57 open class NSKeyedUnarchiver : NSCoder { public init(forreadingfrom: Data) throws public static func unarchivedobject(ofclasses: [AnyClass], from: Data) throws -> Any? public static func unarchivedobject<decodedobjecttype>(ofclass: DecodedObjectType.Type, from: Data) throws -> DecodedObjectType? where DecodedObjectType : NSObject, DecodedObjectType : NSCoding }

58 open class NSKeyedUnarchiver : NSCoder { public init(forreadingfrom: Data) throws public static func unarchivedobject(ofclasses: [AnyClass], from: Data) throws -> Any? public static func unarchivedobject<decodedobjecttype>(ofclass: DecodedObjectType.Type, from: Data) throws -> DecodedObjectType? where DecodedObjectType : NSObject, DecodedObjectType : NSCoding }

59 open class NSKeyedUnarchiver : NSCoder introduced: 10.2, deprecated: 10.14) public introduced: 10.2, deprecated: 10.14) public init(forreadingwith: introduced: 10.2, deprecated: 10.14) open class func unarchiveobject(with: Data) -> introduced: 10.2, deprecated: 10.14) open class func unarchiveobject(withfile: String) -> Any? }

60 open class NSKeyedUnarchiver : NSCoder introduced: 10.2, deprecated: 10.14) public introduced: 10.2, deprecated: 10.14) public init(forreadingwith: introduced: 10.2, deprecated: 10.14) open class func unarchiveobject(with: Data) -> introduced: 10.2, deprecated: 10.14) open class func unarchiveobject(withfile: String) -> Any? }

61 Secure Coding Value Transformer extension NSValueTransformerName { public static let unarchivefromdatatransformername: NSValueTransformerName public static let keyedunarchivefromdatatransformername: NSValueTransformerName }

62 Secure Coding Value Transformer extension NSValueTransformerName introduced: 10.3, deprecated: 10.14) public static let unarchivefromdatatransformername: NSValueTransformerName introduced: 10.3, deprecated: 10.14) public static let keyedunarchivefromdatatransformername: NSValueTransformerName

63 Secure Coding Value Transformer extension NSValueTransformerName introduced: 10.3, deprecated: 10.14) public static let unarchivefromdatatransformername: NSValueTransformerName introduced: 10.3, deprecated: 10.14) public static let keyedunarchivefromdatatransformername: NSValueTransformerName extension NSValueTransformerName { } public static let secureunarchivefromdatatransformername: NSValueTransformerName

64 Secure Coding Adoption

65 Secure Coding Adoption NSAppearance NSBezierPath NSGradient NSShadow NSSound

66 Secure Coding Adoption NSAppearance NSBezierPath NSGradient NSHashTable NSMapTable NSPointerArray NSShadow NSSound

67 Secure Coding Adoption NSAppearance NSBezierPath NSGradient NSHashTable NSMapTable NSPointerArray NSShadow NSSound Data You Can Trust Hall 2 Thursday 9:00AM

68 Dark Mode Chris Dreessen, Cocoa Frameworks

69

70 Supporting Dark Mode Link against macos 10.14

71 Supporting Dark Mode Link against macos Use appearance-sensitive colors

72 Appearance-Sensitive NSColors

73 Appearance-Sensitive NSColors NSColor.alternateSelectedControlTextColor NSColor.controlColor NSColor.disabledControlTextColor NSColor.gridColor NSColor.highlightColor NSColor.labelColor NSColor.placeholderTextColor NSColor.secondaryLabelColor NSColor.selectedControlTextColor NSColor.selectedTextBackgroundColor NSColor.shadowColor NSColor.systemBrown NSColor.systemGreen NSColor.systemPink NSColor.systemRed NSColor.tertiaryLabelColor NSColor.textColor NSColor.windowBackgroundColor NSColor.controlBackgroundColor NSColor.controlTextColor NSColor.findHighlightColor NSColor.headerTextColor NSColor.keyboardFocusIndicatorColor NSColor.linkColor NSColor.quaternaryLabelColor NSColor.selectedControlColor NSColor.selectedMenuItemTextColor NSColor.selectedTextColor NSColor.systemBlue NSColor.systemGray NSColor.systemOrange NSColor.systemPurple NSColor.systemYellow NSColor.textBackgroundColor NSColor.underPageBackgroundColor NSColor.windowFrameTextColor

74 Appearance-Sensitive NSColors NSColor.alternateSelectedControlTextColor NSColor.controlColor NSColor.disabledControlTextColor NSColor.gridColor NSColor.highlightColor NSColor.labelColor NSColor.placeholderTextColor NSColor.secondaryLabelColor NSColor.selectedControlTextColor NSColor.selectedTextBackgroundColor NSColor.shadowColor NSColor.systemBrown NSColor.systemGreen NSColor.systemPink NSColor.systemRed NSColor.tertiaryLabelColor NSColor.textColor NSColor.windowBackgroundColor NSColor.controlBackgroundColor NSColor.controlTextColor NSColor.findHighlightColor NSColor.headerTextColor NSColor.keyboardFocusIndicatorColor NSColor.linkColor NSColor.quaternaryLabelColor NSColor.selectedControlColor NSColor.selectedMenuItemTextColor NSColor.selectedTextColor NSColor.systemBlue NSColor.systemGray NSColor.systemOrange NSColor.systemPurple NSColor.systemYellow NSColor.textBackgroundColor NSColor.underPageBackgroundColor NSColor.windowFrameTextColor

75 Appearance-Sensitive NSColors NSColor.alternateSelectedControlTextColor NSColor.controlColor NSColor.disabledControlTextColor NSColor.gridColor NSColor.highlightColor NSColor.labelColor NSColor.placeholderTextColor NSColor.secondaryLabelColor NSColor.selectedControlTextColor NSColor.selectedTextBackgroundColor NSColor.shadowColor NSColor.systemBrown NSColor.systemGreen NSColor.systemPink NSColor.systemRed NSColor.tertiaryLabelColor NSColor.textColor NSColor.windowBackgroundColor NSColor.alternatingContentBackgroundColors NSColor.separatorColor NSColor.unemphasizedSelectedTextBackgroundColor NSColor.controlBackgroundColor NSColor.controlTextColor NSColor.findHighlightColor NSColor.headerTextColor NSColor.keyboardFocusIndicatorColor NSColor.linkColor NSColor.quaternaryLabelColor NSColor.selectedControlColor NSColor.selectedMenuItemTextColor NSColor.selectedTextColor NSColor.systemBlue NSColor.systemGray NSColor.systemOrange NSColor.systemPurple NSColor.systemYellow NSColor.textBackgroundColor NSColor.underPageBackgroundColor NSColor.windowFrameTextColor NSColor.selectedContentBackgroundColor NSColor.unemphasizedSelectedContentBackgroundColor NSColor.unemphasizedSelectedTextColor

76 Defining Custom Colors in Asset Catalogs

77 Defining Custom Colors in Asset Catalogs

78 Supporting Dark Mode Link against macos Use appearance-sensitive colors Use template images

79 Defining Template Images in Asset Catalogs

80 Defining Custom Images in Asset Catalogs

81 Desktop Pictures

82

83

84

85

86

87

88

89 Do not be daunted

90 Desktop Picture Aware Classes NSWindow NSScrollView NSTableView NSCollectionView

91 Classes and Colors That Look and Taste Great Together NSWindow.backgroundColor NSScrollView.backgroundColor NSTableView.backgroundColor NSCollectionView.backgroundColor NSColor.controlBackgroundColor NSColor.windowBackgroundColor NSColor.underPageBackgroundColor NSColor.textBackgroundColor

92 Classes and Colors That Look and Taste Great Together NSBox.fillColor NSColor.controlBackgroundColor NSColor.windowBackgroundColor NSColor.underPageBackgroundColor NSWindow.backgroundColor NSColor.textBackgroundColor NSScrollView.backgroundColor NSTableView.backgroundColor NSCollectionView.backgroundColor

93 NSVisualEffectView.material =.titlebar.selection.menu.popover.sidebar

94 NSVisualEffectView.material =.titlebar.selection.menu.popover.sidebar.headerview.sheet.windowbackground.hudwindow.fullscreenui.tooltip.contentbackground.underwindowbackground.underpagebackground

95 Accent Colors

96 Accent Colors

97 Accent Colors

98 Accent Color override func draw(_ dirtyrect: NSRect) { NSColor(for: NSColor.currentControlTint).set() //... }

99 Accent Color override func draw(_ dirtyrect: NSRect) { NSColor.controlAccentColor.set() //... }

100 NSColor Effects.withSystemEffect(.none).withSystemEffect(.none).withSystemEffect(.pressed).withSystemEffect(.pressed).withSystemEffect(.deepPressed).withSystemEffect(.deepPressed).withSystemEffect(.disabled).withSystemEffect(.disabled).withSystemEffect(.rollover).withSystemEffect(.rollover)

101 Content Tint Color

102 Content Tint Color

103 Content Tint Color

104 Content Tint Color NSButton button.contenttintcolor = // NSImageView imageview.contenttintcolor = //

105 Content Tint Color

106 Content Tint Color

107 Content Tint Color

108 Related Sessions Introducing Dark Mode Hall 1 Tuesday 5:00PM Advanced Dark Mode Hall 1 Wednesday 11:00AM

109 Layer Backing

110 Layer Backing Apps linked against will no longer use window backing stores Views are rendered exclusively with CALayers

111 UIViews to CALayers

112 UIViews to CALayers

113 NSViews to CALayers

114 NSViews to CALayers

115 Layer Backing No longer necessary to set.wantslayer = true AppKit handles this for you

116 Layer Backing class ColorLayer : CALayer { override func draw(in ctx: CGContext) { ctx.setfillcolor(nscolor.systemred.cgcolor) ctx.fill(cgrect.infinite) } } class ColorLayerDelegate : CALayerDelegate { func draw(_ layer: CALayer, in ctx: CGContext) { ctx.setfillcolor(nscolor.systemred.cgcolor) ctx.fill(cgrect.infinite) } }

117 Layer Backing class ColorView: NSView { override func draw(_ dirtyrect: NSRect) { NSColor.systemRed.set() dirtyrect.fill() } }

118 Layer Backing class ColorLayer : CALayer { override func display() { self.backgroundcolor = NSColor.systemRed.cgColor } } class ColorLayerDelegate : CALayerDelegate { func display(_ layer: CALayer) { layer.backgroundcolor = NSColor.systemRed.cgColor } }

119 Layer Backing class ColorView: NSView { override func draw(_ dirtyrect: NSRect) { NSColor.systemRed.set() dirtyrect.fill() } override func updatelayer() { self.layer?.backgroundcolor = NSColor.systemRed.cgColor } }

120 Layer Backing class ColorView: NSView { override func updatelayer() { self.layer?.backgroundcolor = NSColor.systemRed.cgColor } override var wantsupdatelayer : Bool { get { return true } } }

121 Layer Backing Composition works for all cases Build complicated controls out of NSImageView NSBox NSTextField

122 Obsolete Patterns -[NSView lockfocus] / -[NSView unlockfocus] -[NSWindow graphicscontext] / +[NSGraphicsContext graphicscontextwithwindow:] Just subclass NSView and implement.draw() override func draw(_ dirtyrect: NSRect) { } //...

123 Layer Backing and OpenGL Implementation details for NSOpenGL are different OpenGL is deprecated Use MTKView Metal for OpenGL Developers Hall 3 Tuesday 5:00PM

124 Font antialiasing refinements

125

126

127 User Notifications Framework Jesse Donaldson, Cocoa Frameworks

128 User Notifications Framework on macos

129 User Notifications Framework on macos NSApplication: open func registerforremotenotifications()

130 User Notifications Framework on macos NSApplication: open func registerforremotenotifications() UNUserNotificationCenter: open func requestauthorization(options: UNAuthorizationOptions = [], (Bool, Error?) -> Void)

131 User Notifications Framework on macos Deprecated in NSApplication: public struct RemoteNotificationType : OptionSet { }... open func registerforremotenotifications(matching: NSApplication.RemoteNotificationType) open var enabledremotenotificationtypes: NSApplication.RemoteNotificationType { get } Deprecated all of NSUserNotification: open class NSUserNotification : NSObject, NSCopying { }...

132 NSToolbar

133 NSToolbar

134 NSToolbar

135 NSToolbar open var centereditemidentifier: NSToolbarItem.Identifier?

136 NSToolbar open var centereditemidentifier: NSToolbarItem.Identifier?

137 NSToolbar open var centereditemidentifier: NSToolbarItem.Identifier?

138 NSToolbar open var centereditemidentifier: NSToolbarItem.Identifier?

139 NSToolbar open var centereditemidentifier: NSToolbarItem.Identifier?

140 NSToolbar open var centereditemidentifier: NSToolbarItem.Identifier?

141 NSToolbar open var centereditemidentifier: NSToolbarItem.Identifier?

142 NSToolbar open var centereditemidentifier: NSToolbarItem.Identifier?

143 NSGridView

144 NSGridView

145 NSGridView

146 NSGridView

147 NSGridView

148 NSGridView

149 NSGridView

150 NSGridView

151 NSGridView

152 NSTextView

153 NSTextView New factory methods: open class func fieldeditor() -> Self open class func scrollabletextview() -> NSScrollView open class func scrollabledocumentcontenttextview() -> NSScrollView open class func scrollableplaindocumentcontenttextview() -> NSScrollView

154 NSTextView New factory methods: open class func fieldeditor() -> Self open class func scrollabletextview() -> NSScrollView open class func scrollabledocumentcontenttextview() -> NSScrollView open class func scrollableplaindocumentcontenttextview() -> NSScrollView

155 NSTextView

156 NSTextView

157 NSTextView Style-matching text replacement: Performs appropriate delegate calls Unspecified attributes "filled in" by typingattributes open func performvalidatedreplacement(in: NSRange, with: NSAttributedString) -> Bool

158 NSTextView let developers = NSAttributedString(string: " Developers") let range = NSRange(location: 9, length: 0) textview.performvalidatedreplacement(in: range, with: developers)

159 NSTextView let developers = NSAttributedString(string: " Developers") let range = NSRange(location: 9, length: 0) textview.performvalidatedreplacement(in: range, with: developers)

160 NSTextView let developers = NSAttributedString(string: " Developers") let range = NSRange(location: 9, length: 0) textview.performvalidatedreplacement(in: range, with: developers)

161 NSTextView let developers = NSAttributedString(string: " Developers") let range = NSRange(location: 9, length: 0) textview.performvalidatedreplacement(in: range, with: developers)

162 NSTextView let developers = NSAttributedString(string: " Developers") let range = NSRange(location: 9, length: 0) textview.performvalidatedreplacement(in: range, with: developers)

163 NSTextView let developers = NSAttributedString(string: " Developers") let range = NSRange(location: 9, length: 0) textview.setselectedrange(range) textview.performvalidatedreplacement(in: range, with: developers)

164 NSTextView let developers = NSAttributedString(string: " Developers") let range = NSRange(location: 9, length: 0) textview.setselectedrange(range) textview.performvalidatedreplacement(in: range, with: developers)

165 Continuity Camera

166 Continuity Camera

167 Continuity Camera Services API on NSResponder: open func validrequestor(forsendtype: NSPasteboard.PasteboardType?, returntype: NSPasteboard.PasteboardType?) -> Any?

168 Custom Quick Actions

169 Custom Quick Actions Perform simple or complex actions Filter file lists or operate on file data Manipulate document content in place Accessible in many places

170 Custom Quick Actions

171 Custom Quick Actions

172 Custom Quick Actions

173 Custom Quick Actions

174 Custom Quick Actions

175 Custom Quick Actions

176 Custom Quick Actions

177 Custom Quick Actions

178 Custom Quick Actions

179 Custom Quick Actions

180 Custom Quick Actions

181 Custom Quick Actions

182 Custom Quick Actions

183 Custom Quick Actions

184 Custom Quick Actions

185 Custom Quick Actions

186 Building Action Bundles

187 Building Action Bundles

188 Building Action Bundles

189 Building Action Bundles

190 Building Action Bundles

191 Building Action Bundles

192 Building Action Bundles

193 Summary

194 Summary API refinements User Notifications framework Secure coding NSToolbar Dark mode NSGridView Accent color NSTextView Tint color Continuity camera Layer backing Custom quick actions

195 More Information Introducing Dark Mode Hall 1 Tuesday 5:00PM Cocoa Lab Technology Lab 9 Wednesday 9:00AM Cocoa and Dark Mode Lab Technology Lab 9 Wednesday 2:00PM

196

What s New in Cocoa. App Frameworks #WWDC17. Ali Ozer Daphne Larose

What s New in Cocoa. App Frameworks #WWDC17. Ali Ozer Daphne Larose Session App Frameworks #WWDC17 What s New in Cocoa 207 Ali Ozer Daphne Larose 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

More information

Adopting Advanced Features of the New UI

Adopting Advanced Features of the New UI Frameworks #WWDC14 Adopting Advanced Features of the New UI Session 220 Chris Dreessen AppKit Software Engineer! Corbin Dunn AppKit Software Engineer 2014 Apple Inc. All rights reserved. Redistribution

More information

Cocoa Development Tips

Cocoa Development Tips Session App Frameworks #WWDC17 Cocoa Development Tips Twenty-nine things you may not know about Cocoa 236 Rachel Goldeen, Cocoa Engineer Vincent Hittson, Cocoa Engineer 2017 Apple Inc. All rights reserved.

More information

Touch Bar Fundamentals

Touch Bar Fundamentals Session App Frameworks #WWDC17 Touch Bar Fundamentals 211 Chris Dreessen John Tegtmeyer 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from

More information

What s New in Cocoa #WWDC16. App Frameworks. Session 203

What s New in Cocoa #WWDC16. App Frameworks. Session 203 App Frameworks #WWDC16 What s New in Cocoa Session 203 Ali Ozer Director, Cocoa Frameworks Raleigh Ledet Event Wrangler, Cocoa Frameworks Taylor Kelly Engineer, Cocoa Frameworks 2016 Apple Inc. All rights

More information

Using and Extending the Xcode Source Editor

Using and Extending the Xcode Source Editor Developer Tools #WWDC16 Using and Extending the Xcode Source Editor Session 414 Mike Swingler Xcode Infrastructure and Editors Chris Hanson Xcode Infrastructure and Editors 2016 Apple Inc. All rights reserved.

More information

Getting the Most out of Playgrounds in Xcode

Getting the Most out of Playgrounds in Xcode #WWDC18 Getting the Most out of Playgrounds in Xcode Session 402 Tibet Rooney-Rabdau, Xcode Engineer Alex Brown, Core OS Engineer TJ Usiyan, Xcode Engineer 2018 Apple Inc. All rights reserved. Redistribution

More information

Swift API Design Guidelines

Swift API Design Guidelines Developer Tools #WWDC16 Swift API Design Guidelines The Grand Renaming Session 403 Doug Gregor Swift Engineer Michael Ilseman Swift Engineer 2016 Apple Inc. All rights reserved. Redistribution or public

More information

What s New in Cocoa #WWDC14. Frameworks. Session 204 Ali Ozer Director of Cocoa Frameworks

What s New in Cocoa #WWDC14. Frameworks. Session 204 Ali Ozer Director of Cocoa Frameworks Frameworks #WWDC14 What s New in Cocoa Session 204 Ali Ozer Director of Cocoa Frameworks 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from

More information

What s New in imessage Apps

What s New in imessage Apps Session App Frameworks #WWDC17 What s New in imessage Apps 234 Eugene Bistolas, Messages Engineer Jay Chae, Messages Engineer Stephen Lottermoser, Messages Engineer 2017 Apple Inc. All rights reserved.

More information

Data Delivery with Drag and Drop

Data Delivery with Drag and Drop Session App Frameworks #WWDC17 Data Delivery with Drag and Drop 227 Dave Rahardja, UIKit Tanu Singhal, UIKit 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without

More information

CS193E Lecture 13. More Cocoa Text Drag and Drop Inspectors

CS193E Lecture 13. More Cocoa Text Drag and Drop Inspectors CS193E Lecture 13 More Cocoa Text Drag and Drop Inspectors Today s Topics Questions on the Personal Timeline III assignment? Announcements Typo in last lecture s slides Undo behavior and copy/cut/paste

More information

Adapting to the New UI of OS X Yosemite

Adapting to the New UI of OS X Yosemite Frameworks #WWDC14 Adapting to the New UI of OS X Yosemite Session 209 Mike Stern User Experience Evangelist! Rachel Goldeen Cocoa Software Engineer! Patrick Heynen Cocoa Engineering Manager 2014 Apple

More information

Accessibility on OS X

Accessibility on OS X Frameworks #WWDC14 Accessibility on OS X New Accessibility API Session 207 Patti Hoa Accessibility Engineer! Chris Dolan Accessibility Engineer 2014 Apple Inc. All rights reserved. Redistribution or public

More information

CUSTOM VIEWS. The View Hierarchy. Chapter 12

CUSTOM VIEWS. The View Hierarchy. Chapter 12 Chapter 12 CUSTOM VIEWS A ll the visible objects in an application are either windows or views. In this chapter, you will create a subclass of NSView. From time to time, you will create a custom view to

More information

What s New in Foundation for Swift Session 207

What s New in Foundation for Swift Session 207 App Frameworks #WWDC16 What s New in Foundation for Swift Session 207 Tony Parker Foundation, Apple Michael LeHew Foundation, Apple 2016 Apple Inc. All rights reserved. Redistribution or public display

More information

Modern User Interaction on ios

Modern User Interaction on ios App Frameworks #WWDC17 Modern User Interaction on ios Mastering the UIKit UIGesture System Session 219 Dominik Wagner, UIKit Engineer Michael Turner, UIKit Engineer Glen Low, UIKit Engineer 2017 Apple

More information

What s New in tvos #WWDC16. App Frameworks. Session 206. Hans Kim tvos Engineer

What s New in tvos #WWDC16. App Frameworks. Session 206. Hans Kim tvos Engineer App Frameworks #WWDC16 What s New in tvos Session 206 Hans Kim tvos Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Welcome

More information

What s New in Core Data?

What s New in Core Data? Session App Frameworks #WWDC17 What s New in Core? Persisting since 2004 210 Melissa Turner, Core Engineer Rishi Verma, Core Engineer 2017 Apple Inc. All rights reserved. Redistribution or public display

More information

CS193E Lecture 12. Formatters Cocoa Text More View Drawing

CS193E Lecture 12. Formatters Cocoa Text More View Drawing CS193E Lecture 12 Formatters Cocoa Text More View Drawing Quick Scroll View Demo Announcements Questions on previous material or assignment? If you don t get a grade by Sunday, please let us know Some

More information

Monetize and Promote Your App with iad

Monetize and Promote Your App with iad Media #WWDC15 Monetize and Promote Your App with iad From design to launch Session 503 Carol Teng Shashank Phadke 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without

More information

What s New in NSCollectionView Session 225

What s New in NSCollectionView Session 225 App Frameworks #WWDC15 What s New in NSCollectionView Session 225 Troy Stephens Application Frameworks Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without

More information

Advanced Cocoa Text Tips and Tricks. Aki Inoue Cocoa Engineer

Advanced Cocoa Text Tips and Tricks. Aki Inoue Cocoa Engineer Advanced Cocoa Text Tips and Tricks Aki Inoue Cocoa Engineer 2 Introduction Only on Mac OS Diving deeper Understanding the layout process Getting comfortable with extending and customizing base functionalities

More information

What s New in tvos 12

What s New in tvos 12 #WWDC18 What s New in tvos 12 Session 208 Hans Kim, tvos Engineering 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Agenda Agenda

More information

What s New in MapKit. App Frameworks #WWDC17. Fredrik Olsson

What s New in MapKit. App Frameworks #WWDC17. Fredrik Olsson Session App Frameworks #WWDC17 What s New in MapKit 237 Fredrik Olsson 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. MKMapView.mapType.standard

More information

What s New in Xcode App Signing

What s New in Xcode App Signing Developer Tools #WWDC16 What s New in Xcode App Signing Developing and distributing Session 401 Joshua Pennington Tools Engineering Manager Itai Rom Tools Engineer 2016 Apple Inc. All rights reserved.

More information

Enhancing your apps for the next dimension of touch

Enhancing your apps for the next dimension of touch App Frameworks #WWDC16 A Peek at 3D Touch Enhancing your apps for the next dimension of touch Session 228 Tyler Fox UIKit Frameworks Engineer Peter Hajas UIKit Frameworks Engineer 2016 Apple Inc. All rights

More information

Extending Your Apps with SiriKit

Extending Your Apps with SiriKit App Frameworks #WWDC16 Extending Your Apps with SiriKit Session 225 Vineet Khosla SiriKit Engineering Diana Huang SiriKit Engineering Scott Andrus SiriKit Engineering 2016 Apple Inc. All rights reserved.

More information

Mastering Drag and Drop

Mastering Drag and Drop Session App Frameworks #WWDC17 Mastering Drag and Drop 213 Tom Adriaenssen, UIKit Wenson Hsieh, WebKit Robb Böhnke, UIKit 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

imessage Apps and Stickers, Part 2

imessage Apps and Stickers, Part 2 App Frameworks #WWDC16 imessage Apps and Stickers, Part 2 Interactive Messages Session 224 Alex Carter Messages Engineer Stephen Lottermoser Messages Engineer 2016 Apple Inc. All rights reserved. Redistribution

More information

Leveraging Touch Input on ios

Leveraging Touch Input on ios App Frameworks #WWDC16 Leveraging Touch Input on ios And getting the most out of Apple Pencil Session 220 Dominik Wagner UIKit Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display

More information

CS193E Lecture 7. Document-based Applications NSTableView Key-Value Coding

CS193E Lecture 7. Document-based Applications NSTableView Key-Value Coding CS193E Lecture 7 Document-based Applications NSTableView Key-Value Coding Agenda Questions? Review: delegates, MVC Document-based apps Table views Key Value Coding Model, View, Controller Controller Model

More information

What's New in UIKit Dynamics and Visual Effects Session 229

What's New in UIKit Dynamics and Visual Effects Session 229 App Frameworks #WWDC15 What's New in UIKit Dynamics and Visual Effects Session 229 Michael Turner UIKit Engineer David Duncan UIKit Engineer 2015 Apple Inc. All rights reserved. Redistribution or public

More information

What s New in watchos

What s New in watchos Session App Frameworks #WWDC17 What s New in watchos 205 Ian Parks, watchos Engineering 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from

More information

Understanding Undefined Behavior

Understanding Undefined Behavior Session Developer Tools #WWDC17 Understanding Undefined Behavior 407 Fred Riss, Clang Team Ryan Govostes, Security Engineering and Architecture Team Anna Zaks, Program Analysis Team 2017 Apple Inc. All

More information

Introducing PDFKit on ios

Introducing PDFKit on ios Session App Frameworks #WWDC17 Introducing PDFKit on ios PDF on macos and ios 241 Jeremy Bridon, Software Engineer Nicki Brower, Software Engineer 2017 Apple Inc. All rights reserved. Redistribution or

More information

Enabling Your App for CarPlay

Enabling Your App for CarPlay Session App Frameworks #WWDC17 Enabling Your App for CarPlay 719 Albert Wan, CarPlay Engineering 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

What s New in ARKit 2

What s New in ARKit 2 Session #WWDC18 What s New in ARKit 2 602 Arsalan Malik, ARKit Engineer Reinhard Klapfer, ARKit Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

Media and Gaming Accessibility

Media and Gaming Accessibility Session System Frameworks #WWDC17 Media and Gaming Accessibility 217 Greg Hughes, Software Engineering Manager Charlotte Hill, Software Engineer 2017 Apple Inc. All rights reserved. Redistribution or public

More information

Finding Bugs Using Xcode Runtime Tools

Finding Bugs Using Xcode Runtime Tools Session Developer Tools #WWDC17 Finding Bugs Using Xcode Runtime Tools 406 Kuba Mracek, Program Analysis Engineer Vedant Kumar, Compiler Engineer 2017 Apple Inc. All rights reserved. Redistribution or

More information

Cross Platform Nearby Networking

Cross Platform Nearby Networking Core OS #WWDC14 Cross Platform Nearby Networking Session 709 Demijan Klinc Software Engineer 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

What s New in SpriteKit

What s New in SpriteKit Graphics and Games #WWDC16 What s New in SpriteKit Session 610 Ross Dexter Games Technologies Engineer Clément Boissière Games Technologies Engineer 2016 Apple Inc. All rights reserved. Redistribution

More information

Using Grouped Notifications

Using Grouped Notifications #WWDC18 Using Grouped Notifications Session 711 Michele Campeotto, ios User Notifications 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

CS 371L - Mobile Computing (ios) Dr. William C. Bulko. CS 371L Mobile Computing (ios) Introduction

CS 371L - Mobile Computing (ios) Dr. William C. Bulko. CS 371L Mobile Computing (ios) Introduction CS 371L - Mobile Computing (ios) Dr. William C. Bulko CS 371L Mobile Computing (ios) Introduction 2014 The Evolution of Computing Mainframes Minicomputers - fridge-size PCs - desktop and deskside Laptops

More information

Core Data Best Practices

Core Data Best Practices #WWDC18 Core Data Best Practices Session 224 Scott Perry, Engineer Nick Gillett, Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

What s New in Notifications

What s New in Notifications System Frameworks #WWDC15 What s New in Notifications Session 720 Michele Campeotto ios Notifications Gokul Thirumalai Apple Push Notification Service 2015 Apple Inc. All rights reserved. Redistribution

More information

Introducing the Modern WebKit API

Introducing the Modern WebKit API Frameworks #WWDC14 Introducing the Modern WebKit API Session 206 Anders Carlsson Safari and WebKit Engineer 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

Creating Complications with ClockKit Session 209

Creating Complications with ClockKit Session 209 App Frameworks #WWDC15 Creating Complications with ClockKit Session 209 Eliza Block watchos Engineer Paul Salzman watchos Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display

More information

Custom Views and Events. Lecture 7

Custom Views and Events. Lecture 7 Custom Views and Events Lecture 7 First Representing Points and Areas NSPoint typedef struct _NSPoint { CGFloat x; CGFloat y; } NSPoint; Pair of x, y coordinates NSZeroPoint represents the bottom left

More information

Introduction to Siri Shortcuts

Introduction to Siri Shortcuts #WWDC8 Introduction to Siri Shortcuts Session 2 Ari Weinstein, Siri Willem Mattelaer, Siri 208 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

What's New in Core Spotlight

What's New in Core Spotlight Session System Frameworks #WWDC17 What's New in Core Spotlight Search on macos and ios 231 John Hörnkvist, Spotlight Lyn Fong, Spotlight 2017 Apple Inc. All rights reserved. Redistribution or public display

More information

Quick Interaction Techniques for watchos

Quick Interaction Techniques for watchos App Frameworks #WWDC16 Quick Interaction Techniques for watchos Session 211 Tom Witkin watchos Engineer Miguel Sanchez watchos Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display

More information

Introducing the Contacts Framework

Introducing the Contacts Framework App Frameworks #WWDC15 Introducing the Contacts Framework For OS X, ios, and watchos Session 223 Bruce Stadnyk ios Contacts Engineer Dave Dribin OS X Contacts Engineer Julien Robert ios Contacts Engineer

More information

What s New in LLDB. Debug your way to fame and glory #WWDC15. Developer Tools. Session 402

What s New in LLDB. Debug your way to fame and glory #WWDC15. Developer Tools. Session 402 Developer Tools #WWDC15 What s New in LLDB Debug your way to fame and glory Session 402 Kate Stone Software Behavioralist Sean Callanan Master of Expressions Enrico Granata Data Wizard 2015 Apple Inc.

More information

Advances in AVFoundation Playback

Advances in AVFoundation Playback Media #WWDC16 Advances in AVFoundation Playback Waiting, looping, switching, widening, optimizing Session 503 Sam Bushell Media Systems Architect 2016 Apple Inc. All rights reserved. Redistribution or

More information

Mastering UIKit on tvos

Mastering UIKit on tvos App Frameworks #WWDC16 Mastering UIKit on tvos Session 210 Justin Voss UIKit Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from

More information

ios Accessibility Developing for everyone Session 201 Ian Fisch ios Accessibility

ios Accessibility Developing for everyone Session 201 Ian Fisch ios Accessibility App Frameworks #WWDC15 ios Accessibility Developing for everyone Session 201 Ian Fisch ios Accessibility 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

Storyboards and Controllers on OS X

Storyboards and Controllers on OS X Frameworks #WWDC14 Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Raleigh Ledet AppKit Engineer 2014 Apple Inc. All rights reserved. Redistribution

More information

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall Stanford Developing Applications for ios Today Mostly more Swift but some other stuff too Quick demo of mutating protocols String NSAttributedString Closures (and functions as types in general) Data Structures

More information

User Interfaces. Lecture 16. Model - View - Controller. Hamza Bennani September 6, 2018

User Interfaces. Lecture 16. Model - View - Controller. Hamza Bennani September 6, 2018 User Interfaces Lecture 16 Model - View - Controller Hamza Bennani hamza@hamzabennani.com September 6, 2018 Last Lecture Summary Default Cocoa application. NSApplication NSApplicationDelegate XIB/NIB-file

More information

Introducing On Demand Resources

Introducing On Demand Resources App Frameworks #WWDC15 Introducing On Demand Resources An element of App Thinning Session 214 Steve Lewallen Frameworks Engineering Tony Parker Cocoa Frameworks 2015 Apple Inc. All rights reserved. Redistribution

More information

Writing Energy Efficient Apps

Writing Energy Efficient Apps Session App Frameworks #WWDC17 Writing Energy Efficient Apps 238 Daniel Schucker, Software Power Engineer Prajakta Karandikar, Software Power Engineer 2017 Apple Inc. All rights reserved. Redistribution

More information

Integrating Apps and Content with AR Quick Look

Integrating Apps and Content with AR Quick Look Session #WWDC18 Integrating Apps and Content with AR Quick Look 603 David Lui, ARKit Engineering Dave Addey, ARKit Engineering 2018 Apple Inc. All rights reserved. Redistribution or public display not

More information

Designing for Apple Watch

Designing for Apple Watch Design #WWDC15 Designing for Apple Watch Session 802 Mike Stern User Experience Evangelist 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

Introducing Password AutoFill for Apps

Introducing Password AutoFill for Apps Session App Frameworks #WWDC17 Introducing Password AutoFill for Apps Reducing friction for your users 206 Ricky Mondello, ios Engineer 2017 Apple Inc. All rights reserved. Redistribution or public display

More information

Creating Extensions for ios and OS X, Part Two

Creating Extensions for ios and OS X, Part Two Frameworks #WWDC14 Creating Extensions for ios and OS X, Part Two Architecture Session 217 Damien Sorresso Overloaded Operator 2014 Apple Inc. All rights reserved. Redistribution or public display not

More information

CloudKit Tips And Tricks

CloudKit Tips And Tricks System Frameworks #WWDC15 CloudKit Tips And Tricks Session 715 Nihar Sharma CloudKit Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

CarPlay Audio and Navigation Apps

CarPlay Audio and Navigation Apps #WWDC18 CarPlay Audio and Navigation Apps Tunes and turns Jonathan Hersh, ios Car Experience Albert Wan, ios Car Experience Mike Knippers, ios Car Experience 2018 Apple Inc. All rights reserved. Redistribution

More information

Creating Audio Apps for watchos

Creating Audio Apps for watchos Session #WWDC18 Creating Audio Apps for watchos 504 Neil Desai, watchos Frameworks Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

X Review. Mac OS X Roots: NeXT. BWS Available for virtually every OS

X Review. Mac OS X Roots: NeXT. BWS Available for virtually every OS X Review Distributed window system Server is the user s Terminal Client runs the application WM Xlib Application Widget Set Xt Intrinsics Xlib Highly modular X Server (exchange WM, Widget Set) BWS Available

More information

Managing Documents In Your ios Apps

Managing Documents In Your ios Apps Session #WWDC18 Managing Documents In Your ios Apps 216 Brandon Tennant, Software Engineer Thomas Deniau, Software Engineer Rony Fadel, Software Engineer 2018 Apple Inc. All rights reserved. Redistribution

More information

Engineering for Testability

Engineering for Testability Session Developer Tools #WWDC17 Engineering for Testability 414 Brian Croom, Xcode Engineer Greg Tracy, Xcode Engineer 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

Thread Sanitizer and Static Analysis

Thread Sanitizer and Static Analysis Developer Tools #WWDC16 Thread Sanitizer and Static Analysis Help with finding bugs in your code Session 412 Anna Zaks Manager, Program Analysis Team Devin Coughlin Engineer, Program Analysis Team 2016

More information

User Interfaces. Lecture 15. Application Programming on Mac OS. Hamza Bennani September 4, 2018

User Interfaces. Lecture 15. Application Programming on Mac OS. Hamza Bennani September 4, 2018 User Interfaces Lecture 15 Application Programming on Mac OS Hamza Bennani hamza@hamzabennani.com September 4, 2018 Logistics Office hours: Tue/Thu, 2pm to 3pm. Office: 250 Geoff Wyvill. Acknowledgment:

More information

WatchKit In-Depth, Part 2

WatchKit In-Depth, Part 2 App Frameworks #WWDC15 WatchKit In-Depth, Part 2 Session 208 Nathan de Vries watchos Engineer Chloe Chang watchos Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

MacOS X Cocoa Programming for Vision Scientist --- #1

MacOS X Cocoa Programming for Vision Scientist --- #1 MacOS X Cocoa Programming for Vision Scientist --- #1 (by Izumi Ohzawa, 2005-06-16) 1. Best desktop OS with ease of use and excellent programming environment. 2. OS Darwin BSD Unix Open Source. (Unix 3.

More information

Mysteries of Auto Layout, Part 1

Mysteries of Auto Layout, Part 1 App Frameworks #WWDC15 Mysteries of Auto Layout, Part 1 Session 218 Jason Yao Interface Builder Engineer Kasia Wawer ios Keyboards Engineer 2015 Apple Inc. All rights reserved. Redistribution or public

More information

Building Watch Apps #WWDC15. Featured. Session 108. Neil Desai watchos Engineer

Building Watch Apps #WWDC15. Featured. Session 108. Neil Desai watchos Engineer Featured #WWDC15 Building Watch Apps Session 108 Neil Desai watchos Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Agenda

More information

Building Apps with Dynamic Type

Building Apps with Dynamic Type Session App Frameworks #WWDC17 Building Apps with Dynamic Type 245 Clare Kasemset, Software Engineering Manager Nandini Sundar, Software Engineer 2017 Apple Inc. All rights reserved. Redistribution or

More information

What s New in CloudKit

What s New in CloudKit System Frameworks #WWDC15 What s New in CloudKit Session 704 Olivier Bonnet icloud Client Eric Krugler icloud Server 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

What s New in HomeKit

What s New in HomeKit App Frameworks #WWDC15 What s New in HomeKit Session 210 Anush Nadathur HomeKit Engineer Naveen Kommareddi HomeKit Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

Apple offers a number of resources where you can get Xcode development support:!

Apple offers a number of resources where you can get Xcode development support:! Xcode Release Notes About Xcode 6.1 Supported Configurations Xcode 6.1 requires a Mac running OS X 10.9.4 or OS X 10.10. It includes SDKs for ios 8 and OS X versions 10.9 and 10.10. To develop apps targeting

More information

Building a Game with SceneKit

Building a Game with SceneKit Graphics and Games #WWDC14 Building a Game with SceneKit Session 610 Amaury Balliet Software Engineer 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

Apple offers a number of resources where you can get Xcode development support:!

Apple offers a number of resources where you can get Xcode development support:! Xcode Release Notes About Xcode 6.1 beta 2 Supported Configurations Xcode 6.1 requires a Mac running OS X 10.9.4 or OS X 10.10. It includes SDKs for ios 8 and OS X versions 10.9 and 10.10. To develop apps

More information

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall Stanford Developing Applications for ios Today Miscellaneous Error Handling Any Other Interesting Classes Views Custom Drawing Demo: Draw a Playing Card enum Thrown Errors In Swift, methods can throw errors

More information

Advanced Notifications

Advanced Notifications System Frameworks #WWDC16 Advanced Notifications Session 708 Michele Campeotto ios Notifications 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

Accessibility on ios. Developing for everyone. Frameworks #WWDC14. Session 210 Clare Kasemset ios Accessibility

Accessibility on ios. Developing for everyone. Frameworks #WWDC14. Session 210 Clare Kasemset ios Accessibility Frameworks #WWDC14 Accessibility on ios Developing for everyone Session 210 Clare Kasemset ios Accessibility 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without

More information

Building for Voice with Siri Shortcuts

Building for Voice with Siri Shortcuts #WWDC18 Building for Voice with Siri Shortcuts Session 214 Amit Jain, Siri Ayaka Nonaka, Siri 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

Building Faster in Xcode

Building Faster in Xcode #WWDC18 Building Faster in Xcode Session 408 David Owens, Xcode Engineer Jordan Rose, Swift Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

Building Visually Rich User Experiences

Building Visually Rich User Experiences Session App Frameworks #WWDC17 Building Visually Rich User Experiences 235 Noah Witherspoon, Software Engineer Warren Moore, Software Engineer 2017 Apple Inc. All rights reserved. Redistribution or public

More information

CS193E Lecture 17. Multiple Document Windows OpenGL & Cocoa

CS193E Lecture 17. Multiple Document Windows OpenGL & Cocoa CS193E Lecture 17 Multiple Document Windows OpenGL & Cocoa Multiple Views onto a Model Xcode Keynote Finder Dreamweaver TreeGenerator 3D NSDocument Architecture Supports two approaches: Simple, single

More information

Seamless Linking to Your App

Seamless Linking to Your App App Frameworks #WWDC15 Seamless Linking to Your App Session 509 Conrad Shultz Safari and WebKit Software Engineer Jonathan Grynspan Core Services Software Engineer 2015 Apple Inc. All rights reserved.

More information

What s New in Core Bluetooth

What s New in Core Bluetooth Session System Frameworks #WWDC17 What s New in Core Bluetooth 712 Craig Dooley, Bluetooth Engineer Duy Phan, Bluetooth Engineer 2017 Apple Inc. All rights reserved. Redistribution or public display not

More information

Getting the Most Out of HealthKit

Getting the Most Out of HealthKit App Frameworks #WWDC16 Getting the Most Out of HealthKit What s new and best practices Session 209 Matthew Salesi ios Software Engineer Joefrey Kibuule ios Software Engineer 2016 Apple Inc. All rights

More information

Introducing the Photos Frameworks

Introducing the Photos Frameworks Media #WWDC14 Introducing the Photos Frameworks Session 511 Adam Swift ios Photos Frameworks 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

Stanford CS193p. Developing Applications for ios. Winter CS193p. Winter 2017

Stanford CS193p. Developing Applications for ios. Winter CS193p. Winter 2017 Stanford Developing Applications for ios Today Views Custom Drawing Demo FaceView Views A view (i.e. UIView subclass) represents a rectangular area Defines a coordinate space For drawing And for handling

More information

What s New in Testing

What s New in Testing #WWDC18 What s New in Testing Session 403 Honza Dvorsky, Xcode Engineer Ethan Vaughan, Xcode Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

SceneKit in Swift Playgrounds

SceneKit in Swift Playgrounds Session Graphics and Games #WWDC17 SceneKit in Swift Playgrounds 605 Michael DeWitt, Gem Collector Lemont Washington, Draw Call Blaster 2017 Apple Inc. All rights reserved. Redistribution or public display

More information

What s New in Core Image

What s New in Core Image Media #WWDC15 What s New in Core Image Session 510 David Hayward Engineering Manager Tony Chu Engineer Alexandre Naaman Lead Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display

More information

Document-Based App Programming Guide for Mac

Document-Based App Programming Guide for Mac Document-Based App Programming Guide for Mac Contents About the Cocoa Document Architecture 7 At a Glance 7 The Model-View-Controller Pattern Is Basic to a Document-Based App 8 Xcode Supports Coding and

More information