Professional Documents
Culture Documents
These are confidential sessionsplease refrain from streaming, blogging, or taking pictures
1
Layout
Autolayout
Autolayout
Benefits
Reduced need for in-code layoutIB goes further Improved in-code layout Design flexibility Localization Resolution independence
Agenda
Basics Runtime Layering Debugging Transition
Demo
Interface Builder: Simplicity and expressiveness
Kevin Cathey
Interface Builder
10
y = mx + b
11
view1.attr1 = mview2.attr2 + b
12
view1.attr1 = mview2.attr2 + b
acceptButton.left = cancelButton.right + 12
13
14
15
16
ASCII Art!
17
Cancel
Accept
18
Cancel
Accept
19
[cancelButton]-[acceptButton]
20
21
[cancelButton]-[acceptButton] _
22
[cancelButton
]-
-[acceptButton _
23
[cancelButton(72)]-12-[acceptButton(50)]
24
view
predicate
[cancelButton(72)]-12-[acceptButton(50)]
connection
25
[button]-[textField]
8 pts
26
[wideView(>=60@700)] 60 pts
wideView
27
|-5-[contentView]-5-|
superview
5 pts
contentView
5 pts
28
V:[topView]-10-[bottomView]
topView
10 pts
bottomView
29
[redBox][yellowBox(==redBox)]
redBox
yellowBox
30
31
|-[Find]-[FindNext]-[FindField(>=20)]-|
superview
20 pts
8 pts
8 pts
20 pts
20 pts
32
33
34
Agenda
Basics Runtime Layering Debugging Transition
35
Constraints at Runtime
-[NSView addConstraint:] -[NSView removeConstraint:]
Superview
Button
Button
36
Phases of Display
Display
37
Phases of Display
Display
38
Phases of Display
Update Constraints Layout Display
39
Phases of Display
Update Constraints
-[NSWindow updateConstraintsIfNeeded]
-[NSView updateConstraintsForSubtreeIfNeeded]
Layout
-[NSWindow layoutIfNeeded]
-[NSView layoutSubtreeIfNeeded]
Display
-[NSWindow displayIfNeeded] -[NSView displayIfNeeded] -[NSView drawRect:] -[NSView needsDisplay] -[NSView setNeedsDisplay:]
40
Layout Phase
Calls -[NSView setFrame:]
41
42
Agenda
Basics Runtime Layering Debugging Transition
43
setFrame: is monolithic
If view state changes, layout never updates Controller layer has to know a lot about visual design of views
44
Baselines
NSView:
-(CGFloat)baselineOffsetFromBottom;
45
Alignment Rect
46
Alignment Rect
NSView:
- (NSEdgeInsets)alignmentRectInsets;
47
48
-setContentCompressionResistancePriority:forOrientation: -setContentHuggingPriority:forOrientation:
49
50
Agenda
Basics Runtime Layering Debugging Transition
51
Demo
Working with Autolayout in code
Ken Ferry
Cocoa Frameworks
52
Debugging
Find bad view frame
-NSShowAllViews YES -[NSView _subtreeDescription]
53
Debugging
54
Agenda
Basics Runtime Layering Debugging Transition
55
Transition
-[NSView translatesAutoresizingMaskIntoConstraints]
56
Transition
Autolayout activates lazily
Update Constraints Layout Display
57
Transition
Autolayout activates lazily
Update Constraints Layout
Display
58
Transition
Autolayout activates lazily
Update Constraints Layout Display
59
Review
Reduced need for in-code layout
Constraints accommodate dynamic content Improved in-code layout
Baselines, alignment rect, intrinsic content size Localization Dynamic content, intrinsic content size Expressiveness Peer to peer relationships, inequalities, priority
60
More Information
Bill Dudney
Cocoa Evangelist dudney@apple.com
61
Related Sessions
Using Interface Builder in Xcode
Pacific Heights Tuesday 2:00PM
62
Labs
Cocoa Lab Cocoa and Autolayout Lab Cocoa, Full Screen, and Aqua Lab Cocoa, Auto Save, File Coordination, and Resume Lab
App Frameworks Lab A Tuesday 2:00-6:00PM App Frameworks Lab A Wednesday 9:00-11:00AM App Frameworks Lab A Wednesday 2:00-6:00PM App Frameworks Lab A Thursday 2:00-4:00PM
63
64