ibdesignable - cocoaconf seattle 2014
TRANSCRIPT
![Page 1: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/1.jpg)
Instant Gratificationin Interface Builder
![Page 2: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/2.jpg)
Making Views
![Page 3: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/3.jpg)
Where’s the subview?
![Page 4: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/4.jpg)
See Constraints
![Page 5: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/5.jpg)
Show Bounds
![Page 6: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/6.jpg)
![Page 7: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/7.jpg)
![Page 8: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/8.jpg)
Playgrounds
![Page 9: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/9.jpg)
IBDesignable
![Page 10: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/10.jpg)
See your view live in Interface Builder
![Page 11: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/11.jpg)
Tweak your view live in Interface Builder
![Page 12: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/12.jpg)
What’s in it for me?
![Page 13: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/13.jpg)
DRY
![Page 14: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/14.jpg)
DRY
(Insert Seattle joke here)
![Page 15: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/15.jpg)
DRY
(Insert Seattle joke here)
☂
![Page 16: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/16.jpg)
MVC
![Page 17: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/17.jpg)
MVC
![Page 18: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/18.jpg)
⌘-R
![Page 19: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/19.jpg)
self.borderWidth = 10;
![Page 20: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/20.jpg)
Build & Run. Get to screen.
Observe Cool UI.
![Page 21: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/21.jpg)
self.borderWidth = 20;
![Page 22: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/22.jpg)
Build & Run. Get to screen.
Observe Cool UI.
![Page 23: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/23.jpg)
self.borderWidth = 15;
![Page 24: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/24.jpg)
Build & Run. Get to screen.
Observe Cool UI.
![Page 25: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/25.jpg)
Repeat
![Page 26: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/26.jpg)
Repeat ad nauseam
![Page 27: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/27.jpg)
Case Study
![Page 28: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/28.jpg)
All Places
![Page 29: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/29.jpg)
Single Place
![Page 30: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/30.jpg)
Single PlaceAll Places
![Page 31: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/31.jpg)
Place Map
![Page 32: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/32.jpg)
Practical Application
![Page 33: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/33.jpg)
From Zero to VisibleDemo
![Page 34: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/34.jpg)
IBInspectable
![Page 35: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/35.jpg)
IBInspectable Properties• Boolean
• Integer / Float
• String / Localized String
• CGRect CGPoint CGSize
• Color
• Range
• Nil
![Page 36: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/36.jpg)
Update LiveDemo
![Page 37: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/37.jpg)
Problems
![Page 38: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/38.jpg)
Problems and Solutions
![Page 39: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/39.jpg)
NSFont・UIFont
![Page 40: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/40.jpg)
Debugging / Logging
![Page 41: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/41.jpg)
public func liveDebugLog(message: String) { #if !(TARGET_OS_IPHONE) // ENSURE LOG FILE EXISTS let logPath = "/tmp/XcodeLiveRendering.log" let fm = NSFileManager.createIfNecessary(logPath) // GET FILE HANDLE var fileHandle = NSFileHandle(forWritingAtPath: logPath)! fileHandle.seekToEndOfFile() // WRITE OUT LOG let data = message.asUTF8Data fileHandle.writeData(data)
#endif
}
![Page 42: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/42.jpg)
CocoaPods
![Page 43: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/43.jpg)
$ gem update cocoapods
![Page 44: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/44.jpg)
# build for all architectures post_install do |installer| installer.project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO' end end end
![Page 45: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/45.jpg)
Can’t drag and drop from subview UIControls to
create IBActions
![Page 46: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/46.jpg)
videoControlsView?.playButton.addTarget(self,
action: Selector("tappedPlayButton"),
forControlEvents: UIControlEvents.TouchUpInside)
Use Target-Action
![Page 47: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/47.jpg)
IBInspectable properties of subviews aren’t
exposed.
![Page 48: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/48.jpg)
Preemptive Q&A
![Page 49: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/49.jpg)
Do I have to use a separate framework?
No
![Page 50: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/50.jpg)
Does this work in Objective-C?
Yes
![Page 51: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/51.jpg)
Can I do my view layout in Interface Builder?
Probably
http://justabeech.com/2014/07/27/xcode-6-live-rendering-from-nib/
![Page 52: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/52.jpg)
Resources
![Page 53: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/53.jpg)
Debugging
![Page 54: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/54.jpg)
Using Assets
![Page 55: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/55.jpg)
Apple Docs
https://developer.apple.com/library/ios/recipes/xcode_help-IB_objects_media/chapters/
CreatingaLiveViewofaCustomObject.html
![Page 56: IBDesignable - CocoaConf Seattle 2014](https://reader037.vdocuments.us/reader037/viewer/2022100305/55a25f9e1a28abcd718b46b1/html5/thumbnails/56.jpg)
@MartinJNash Seattle