From 13f15d5e3344f76741a2716bef249d97a6d06335 Mon Sep 17 00:00:00 2001 From: Alex Usbergo Date: Wed, 18 May 2016 12:56:54 +0200 Subject: [PATCH] more playgrounds --- .../Contents.swift | 0 .../Resources/logo_small.png | Bin .../Sources/Shared.swift | 0 .../contents.xcplayground | 0 .../contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin .../timeline.xctimeline | 0 .../UserInterfaceState.xcuserstate | Bin 7768 -> 0 bytes .../Contents.swift | 0 .../Resources/logo_small.png | Bin .../Sources/Shared.swift | 0 .../contents.xcplayground | 4 + .../contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin 0 -> 8900 bytes .../timeline.xctimeline | 0 .../Contents.swift | 116 ++++++++++++++++++ .../Resources/logo_small.png | Bin 0 -> 62852 bytes .../Sources/Shared.swift | 51 ++++++++ .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 8046 bytes .../timeline.xctimeline | 58 +++++++++ .../contents.xcworkspacedata | 7 +- .../UserInterfaceState.xcuserstate | Bin 23396 -> 29487 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 2 +- Render/ComponentView.swift | 1 + Render/ComponentViewType.swift | 4 + .../UserInterfaceState.xcuserstate | Bin 97226 -> 97226 bytes 28 files changed, 248 insertions(+), 4 deletions(-) rename Playgrounds/{02 Flexbox Components.playground => 01 Flexbox Components.playground}/Contents.swift (100%) rename Playgrounds/{01 Vanilla Components.playground => 01 Flexbox Components.playground}/Resources/logo_small.png (100%) rename Playgrounds/{01 Vanilla Components.playground => 01 Flexbox Components.playground}/Sources/Shared.swift (100%) rename Playgrounds/{02 Flexbox Components.playground => 01 Flexbox Components.playground}/contents.xcplayground (100%) rename Playgrounds/{01 Vanilla Components.playground => 01 Flexbox Components.playground}/playground.xcworkspace/contents.xcworkspacedata (100%) rename Playgrounds/{01 Vanilla Components.playground => 01 Flexbox Components.playground}/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate (100%) rename Playgrounds/{02 Flexbox Components.playground => 01 Flexbox Components.playground}/timeline.xctimeline (100%) delete mode 100644 Playgrounds/02 Flexbox Components.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate rename Playgrounds/{01 Vanilla Components.playground => 02 Vanilla Components.playground}/Contents.swift (100%) rename Playgrounds/{02 Flexbox Components.playground => 02 Vanilla Components.playground}/Resources/logo_small.png (100%) rename Playgrounds/{02 Flexbox Components.playground => 02 Vanilla Components.playground}/Sources/Shared.swift (100%) create mode 100644 Playgrounds/02 Vanilla Components.playground/contents.xcplayground rename Playgrounds/{02 Flexbox Components.playground => 02 Vanilla Components.playground}/playground.xcworkspace/contents.xcworkspacedata (100%) create mode 100644 Playgrounds/02 Vanilla Components.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate rename Playgrounds/{01 Vanilla Components.playground => 02 Vanilla Components.playground}/timeline.xctimeline (100%) create mode 100644 Playgrounds/03 Components embedded in Cells.playground/Contents.swift create mode 100644 Playgrounds/03 Components embedded in Cells.playground/Resources/logo_small.png create mode 100644 Playgrounds/03 Components embedded in Cells.playground/Sources/Shared.swift rename Playgrounds/{01 Vanilla Components.playground => 03 Components embedded in Cells.playground}/contents.xcplayground (83%) create mode 100644 Playgrounds/03 Components embedded in Cells.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 Playgrounds/03 Components embedded in Cells.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Playgrounds/03 Components embedded in Cells.playground/timeline.xctimeline diff --git a/Playgrounds/02 Flexbox Components.playground/Contents.swift b/Playgrounds/01 Flexbox Components.playground/Contents.swift similarity index 100% rename from Playgrounds/02 Flexbox Components.playground/Contents.swift rename to Playgrounds/01 Flexbox Components.playground/Contents.swift diff --git a/Playgrounds/01 Vanilla Components.playground/Resources/logo_small.png b/Playgrounds/01 Flexbox Components.playground/Resources/logo_small.png similarity index 100% rename from Playgrounds/01 Vanilla Components.playground/Resources/logo_small.png rename to Playgrounds/01 Flexbox Components.playground/Resources/logo_small.png diff --git a/Playgrounds/01 Vanilla Components.playground/Sources/Shared.swift b/Playgrounds/01 Flexbox Components.playground/Sources/Shared.swift similarity index 100% rename from Playgrounds/01 Vanilla Components.playground/Sources/Shared.swift rename to Playgrounds/01 Flexbox Components.playground/Sources/Shared.swift diff --git a/Playgrounds/02 Flexbox Components.playground/contents.xcplayground b/Playgrounds/01 Flexbox Components.playground/contents.xcplayground similarity index 100% rename from Playgrounds/02 Flexbox Components.playground/contents.xcplayground rename to Playgrounds/01 Flexbox Components.playground/contents.xcplayground diff --git a/Playgrounds/01 Vanilla Components.playground/playground.xcworkspace/contents.xcworkspacedata b/Playgrounds/01 Flexbox Components.playground/playground.xcworkspace/contents.xcworkspacedata similarity index 100% rename from Playgrounds/01 Vanilla Components.playground/playground.xcworkspace/contents.xcworkspacedata rename to Playgrounds/01 Flexbox Components.playground/playground.xcworkspace/contents.xcworkspacedata diff --git a/Playgrounds/01 Vanilla Components.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate b/Playgrounds/01 Flexbox Components.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate similarity index 100% rename from Playgrounds/01 Vanilla Components.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate rename to Playgrounds/01 Flexbox Components.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/Playgrounds/02 Flexbox Components.playground/timeline.xctimeline b/Playgrounds/01 Flexbox Components.playground/timeline.xctimeline similarity index 100% rename from Playgrounds/02 Flexbox Components.playground/timeline.xctimeline rename to Playgrounds/01 Flexbox Components.playground/timeline.xctimeline diff --git a/Playgrounds/02 Flexbox Components.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate b/Playgrounds/02 Flexbox Components.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 5ad156716233a002113899968907b25bf1e6f609..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7768 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 LI^{d^nauwOZev+} diff --git a/Playgrounds/01 Vanilla Components.playground/Contents.swift b/Playgrounds/02 Vanilla Components.playground/Contents.swift similarity index 100% rename from Playgrounds/01 Vanilla Components.playground/Contents.swift rename to Playgrounds/02 Vanilla Components.playground/Contents.swift diff --git a/Playgrounds/02 Flexbox Components.playground/Resources/logo_small.png b/Playgrounds/02 Vanilla Components.playground/Resources/logo_small.png similarity index 100% rename from Playgrounds/02 Flexbox Components.playground/Resources/logo_small.png rename to Playgrounds/02 Vanilla Components.playground/Resources/logo_small.png diff --git a/Playgrounds/02 Flexbox Components.playground/Sources/Shared.swift b/Playgrounds/02 Vanilla Components.playground/Sources/Shared.swift similarity index 100% rename from Playgrounds/02 Flexbox Components.playground/Sources/Shared.swift rename to Playgrounds/02 Vanilla Components.playground/Sources/Shared.swift diff --git a/Playgrounds/02 Vanilla Components.playground/contents.xcplayground b/Playgrounds/02 Vanilla Components.playground/contents.xcplayground new file mode 100644 index 00000000..2c597bbd --- /dev/null +++ b/Playgrounds/02 Vanilla Components.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Playgrounds/02 Flexbox Components.playground/playground.xcworkspace/contents.xcworkspacedata b/Playgrounds/02 Vanilla Components.playground/playground.xcworkspace/contents.xcworkspacedata similarity index 100% rename from Playgrounds/02 Flexbox Components.playground/playground.xcworkspace/contents.xcworkspacedata rename to Playgrounds/02 Vanilla Components.playground/playground.xcworkspace/contents.xcworkspacedata diff --git a/Playgrounds/02 Vanilla Components.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate b/Playgrounds/02 Vanilla Components.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..b2927b6d24a7bad94e6d75bd0aebcd78aaf8985b GIT binary patch literal 8900 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 literal 0 HcmV?d00001 diff --git a/Playgrounds/01 Vanilla Components.playground/timeline.xctimeline b/Playgrounds/02 Vanilla Components.playground/timeline.xctimeline similarity index 100% rename from Playgrounds/01 Vanilla Components.playground/timeline.xctimeline rename to Playgrounds/02 Vanilla Components.playground/timeline.xctimeline diff --git a/Playgrounds/03 Components embedded in Cells.playground/Contents.swift b/Playgrounds/03 Components embedded in Cells.playground/Contents.swift new file mode 100644 index 00000000..a41bec11 --- /dev/null +++ b/Playgrounds/03 Components embedded in Cells.playground/Contents.swift @@ -0,0 +1,116 @@ +import UIKit +import XCPlayground +import Render + +/*: + ![logo](logo_small.png) + # Components embedded in cells + + You can wrap your components in `ComponentTableViewCell` or `ComponentCollectionViewCell` and use + the classic dataSource/delegate pattern for you view controller. + */ + +class FooState: ComponentStateBase { + let text: String = randomString(randomInt(0, max: 500)) +} + +class FooComponentView: ComponentView { + + override class func initialize() { + + // if we intend to use this component inside of a cell + // we have to register an instance as a prototype for the infra. + // The 'initialize' function seems to be a convenient palce to do it. + registerPrototype(component: FooComponentView()) + } + + // we cast the state for convenience + var fooState: FooState { + return (self.state as? FooState) ?? FooState() + } + + override func construct() -> ComponentNodeType { + let margin: Float = 4.0 + let insets: Inset = (margin, margin, margin, margin, margin, margin) + return ComponentNode().configure({ view in + view.style.flexDirection = .Row + view.style.margin = insets + + // that's how we can define the size in relation to the size of the parent view. + let min = ~self.parentSize.width + view.style.minDimensions.width = max(min, 96) + + view.backgroundColor = UIColor.A + }).children([ + ComponentNode().configure({ view in + view.style.dimensions = (32, 32) + view.style.margin = insets + view.backgroundColor = UIColor.B + view.layer.cornerRadius = 16 + }), + ComponentNode().configure({ view in + view.style.margin = insets + view.style.alignSelf = .Center + view.style.flex = Flex.Max + view.text = self.fooState.text + view.numberOfLines = 0 + view.font = UIFont.systemFontOfSize(12.0, weight: UIFontWeightLight) + }) + ]) + } +} + +/*: Now this is how we wrap the component inside a `ComponentTableViewCell` in our datasource */ + +class DataSource: NSObject, UITableViewDataSource { + + let items: [FooState] = { + var items = [FooState]() + for _ in 0..<6 { + items.append(FooState()) + } + return items + }() + + func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return items.count + } + + func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let reuseIdentifier = String(FooComponentView.self) + let cell: ComponentTableViewCell! = + //dequeue a cell with the given identifier + //(remember to use different identifiers for different component classes) + tableView.dequeueReusableCellWithIdentifier(reuseIdentifier) as? ComponentTableViewCell ?? + + //or create a new Cell wrapping the component + ComponentTableViewCell(reuseIdentifier: reuseIdentifier, component: FooComponentView()) + + //set the state for the cell + cell.state = items[indexPath.row] + + //and render the component + cell.renderComponent(CGSize.sizeConstraintToWidth(tableView.bounds.size.width)) + return cell + } +} + +/*: And finally create a `UITableView` */ + +let tableView = UITableView(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: 320, height: 320))) + +//we want automatic dimensions for our cells +tableView.rowHeight = UITableViewAutomaticDimension + +//this improves drastically the performance of reloadData when you have a large collection of items +tableView.estimatedRowHeight = 100 + +let dataSource = DataSource() +tableView.dataSource = dataSource +tableView.reloadData() + +tableView + + + + diff --git a/Playgrounds/03 Components embedded in Cells.playground/Resources/logo_small.png b/Playgrounds/03 Components embedded in Cells.playground/Resources/logo_small.png new file mode 100644 index 0000000000000000000000000000000000000000..c7e60eaeedeba63fdd8cd297ee5d263a7d5478bf GIT binary patch literal 62852 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 Zd^}!iNsbE3CmeXdPg}!4y$WK7{C|ze*FOLN literal 0 HcmV?d00001 diff --git a/Playgrounds/03 Components embedded in Cells.playground/Sources/Shared.swift b/Playgrounds/03 Components embedded in Cells.playground/Sources/Shared.swift new file mode 100644 index 00000000..cc7b3fd6 --- /dev/null +++ b/Playgrounds/03 Components embedded in Cells.playground/Sources/Shared.swift @@ -0,0 +1,51 @@ + +import UIKit + +public func snapshot(view: UIView) -> UIImage { + view.layoutSubviews() + UIGraphicsBeginImageContext(view.frame.size) + view.layer.renderInContext(UIGraphicsGetCurrentContext()!) + let image = UIGraphicsGetImageFromCurrentImageContext() + UIGraphicsEndImageContext() + return image +} + +extension UIColor { + class public var A: UIColor { + return UIColor(red: 238/255, green: 238/255, blue: 238/255, alpha: 1) + } + class public var B: UIColor { + return UIColor(red: 0/255, green: 188/255, blue: 212/255, alpha: 1) + } + class public var C: UIColor { + return UIColor(red: 76/255, green: 175/255, blue: 80/255, alpha: 1) + } + class public var D: UIColor { + return UIColor(red: 165/255, green: 214/255, blue: 167/255, alpha: 1) + } + class public var E: UIColor { + return UIColor(red: 46/255, green: 125/255, blue: 50/255, alpha: 1) + } + class public var F: UIColor { + return UIColor(red: 244/255, green: 67/255, blue: 54/255, alpha: 1) + } + class public var G: UIColor { + return UIColor(red: 33/255, green: 150/255, blue: 243/255, alpha: 1) + } +} + +public func randomString(length: Int) -> String { + let allowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 " + let allowedCharsCount = UInt32(allowedChars.characters.count) + var randomString = "" + for _ in (0.. Int { + return min + Int(arc4random_uniform(UInt32(max - min + 1))) +} \ No newline at end of file diff --git a/Playgrounds/01 Vanilla Components.playground/contents.xcplayground b/Playgrounds/03 Components embedded in Cells.playground/contents.xcplayground similarity index 83% rename from Playgrounds/01 Vanilla Components.playground/contents.xcplayground rename to Playgrounds/03 Components embedded in Cells.playground/contents.xcplayground index 712c41fb..35968656 100644 --- a/Playgrounds/01 Vanilla Components.playground/contents.xcplayground +++ b/Playgrounds/03 Components embedded in Cells.playground/contents.xcplayground @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Playgrounds/03 Components embedded in Cells.playground/playground.xcworkspace/contents.xcworkspacedata b/Playgrounds/03 Components embedded in Cells.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/Playgrounds/03 Components embedded in Cells.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Playgrounds/03 Components embedded in Cells.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate b/Playgrounds/03 Components embedded in Cells.playground/playground.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..ef3012aec606a9586443b5a6eadcb9516720888e GIT binary patch literal 8046 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 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Playgrounds/RenderPlaygrounds.xcworkspace/contents.xcworkspacedata b/Playgrounds/RenderPlaygrounds.xcworkspace/contents.xcworkspacedata index 92ad4f3b..b48ce524 100644 --- a/Playgrounds/RenderPlaygrounds.xcworkspace/contents.xcworkspacedata +++ b/Playgrounds/RenderPlaygrounds.xcworkspace/contents.xcworkspacedata @@ -5,9 +5,12 @@ location = "group:../Render.xcodeproj"> + location = "group:/Users/alexusbergo/Desktop/swift/Render/Playgrounds/01 Flexbox Components.playground"> + location = "group:/Users/alexusbergo/Desktop/swift/Render/Playgrounds/02 Vanilla Components.playground"> + + diff --git a/Playgrounds/RenderPlaygrounds.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate b/Playgrounds/RenderPlaygrounds.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/UserInterfaceState.xcuserstate index 984d9569ff17ece043e14a4b010921fd3aa178ba..253e93ee2051b5396bafe39e77bc8bdcb49892cc 100644 GIT binary patch literal 29487 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 P^9whxIn{6e%9i~P4BhQK diff --git a/Playgrounds/RenderPlaygrounds.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Playgrounds/RenderPlaygrounds.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 916ba0c7..58f7017c 100644 --- a/Playgrounds/RenderPlaygrounds.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/Playgrounds/RenderPlaygrounds.xcworkspace/xcuserdata/alexusbergo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -16,7 +16,7 @@ nKgnK}UbR}WVJ delta 31 lcmX^0o%Pgr)(zW3S#x*TPJOp|Pbm955K~~n<`bWpIsgQr51Rl0