Commit 50d1b21d by Daniel Dahan

updated Grid interface

parent c524d017
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
9656CD121C6C664700EBCEF1 /* Material.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9656CD111C6C664700EBCEF1 /* Material.framework */; };
9656CD131C6C664700EBCEF1 /* Material.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9656CD111C6C664700EBCEF1 /* Material.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
965C58CD1C6B936400CFB4E1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C58CC1C6B936400CFB4E1 /* AppDelegate.swift */; }; 965C58CD1C6B936400CFB4E1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C58CC1C6B936400CFB4E1 /* AppDelegate.swift */; };
965C58CF1C6B936400CFB4E1 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C58CE1C6B936400CFB4E1 /* ViewController.swift */; }; 965C58CF1C6B936400CFB4E1 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C58CE1C6B936400CFB4E1 /* ViewController.swift */; };
965C58D41C6B936400CFB4E1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 965C58D31C6B936400CFB4E1 /* Assets.xcassets */; }; 965C58D41C6B936400CFB4E1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 965C58D31C6B936400CFB4E1 /* Assets.xcassets */; };
...@@ -20,6 +22,7 @@ ...@@ -20,6 +22,7 @@
dstPath = ""; dstPath = "";
dstSubfolderSpec = 10; dstSubfolderSpec = 10;
files = ( files = (
9656CD131C6C664700EBCEF1 /* Material.framework in Embed Frameworks */,
); );
name = "Embed Frameworks"; name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
...@@ -27,6 +30,7 @@ ...@@ -27,6 +30,7 @@
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
9656CD111C6C664700EBCEF1 /* Material.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = Material.framework; path = "/Users/danieldahan/Library/Developer/Xcode/DerivedData/Material-hbpnflxhoouqxebjcyhbbhqyesjd/Build/Products/Debug-iphoneos/Material.framework"; sourceTree = "<absolute>"; };
965C58C91C6B936400CFB4E1 /* GridView.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GridView.app; sourceTree = BUILT_PRODUCTS_DIR; }; 965C58C91C6B936400CFB4E1 /* GridView.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GridView.app; sourceTree = BUILT_PRODUCTS_DIR; };
965C58CC1C6B936400CFB4E1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 965C58CC1C6B936400CFB4E1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
965C58CE1C6B936400CFB4E1 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; }; 965C58CE1C6B936400CFB4E1 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
...@@ -40,6 +44,7 @@ ...@@ -40,6 +44,7 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
9656CD121C6C664700EBCEF1 /* Material.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
...@@ -49,6 +54,7 @@ ...@@ -49,6 +54,7 @@
965C58C01C6B936400CFB4E1 = { 965C58C01C6B936400CFB4E1 = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
9656CD111C6C664700EBCEF1 /* Material.framework */,
965C58CB1C6B936400CFB4E1 /* GridView */, 965C58CB1C6B936400CFB4E1 /* GridView */,
965C58CA1C6B936400CFB4E1 /* Products */, 965C58CA1C6B936400CFB4E1 /* Products */,
); );
......
...@@ -57,57 +57,57 @@ class ViewController: UIViewController { ...@@ -57,57 +57,57 @@ class ViewController: UIViewController {
private func prepareLargeCardViewExample() { private func prepareLargeCardViewExample() {
let cardView: MaterialPulseView = MaterialPulseView(frame: CGRectMake(16, 100, view.bounds.width - 32, 350)) let cardView: MaterialPulseView = MaterialPulseView(frame: CGRectMake(16, 100, view.bounds.width - 32, 350))
cardView.pulseColor = MaterialColor.blueGrey.lighten5 cardView.pulseColor = MaterialColor.blueGrey.lighten5
cardView.grid.axis = .Vertical cardView.grid.axis.direction = .Vertical
cardView.depth = .Depth1 cardView.depth = .Depth1
view.addSubview(cardView) view.addSubview(cardView)
let imageView: MaterialView = MaterialView() let imageView: MaterialView = MaterialView()
imageView.grid.row = .Row7 imageView.grid.rows = 7
imageView.grid.column = .Column6 imageView.grid.columns = 6
imageView.grid.spacing = 4 imageView.grid.spacing = 4
cardView.addSubview(imageView) cardView.addSubview(imageView)
var image: UIImage? = UIImage(named: "CosmicMindInverted") var image: UIImage? = UIImage(named: "CosmicMindInverted")
let leftImageViewCollection: MaterialView = MaterialView() let leftImageViewCollection: MaterialView = MaterialView()
leftImageViewCollection.grid.column = .Column3 leftImageViewCollection.grid.columns = 3
leftImageViewCollection.image = image leftImageViewCollection.image = image
leftImageViewCollection.contentsGravity = .ResizeAspectFill leftImageViewCollection.contentsGravity = .ResizeAspectFill
imageView.addSubview(leftImageViewCollection) imageView.addSubview(leftImageViewCollection)
let rightImageViewCollection: MaterialView = MaterialView() let rightImageViewCollection: MaterialView = MaterialView()
rightImageViewCollection.grid.column = .Column3 rightImageViewCollection.grid.columns = 3
rightImageViewCollection.grid.axis = .Vertical rightImageViewCollection.grid.axis.direction = .Vertical
rightImageViewCollection.grid.spacing = 4 rightImageViewCollection.grid.spacing = 4
imageView.addSubview(rightImageViewCollection) imageView.addSubview(rightImageViewCollection)
image = UIImage(named: "CosmicMindInverted") image = UIImage(named: "CosmicMindInverted")
let topImageViewCollection: MaterialView = MaterialView() let topImageViewCollection: MaterialView = MaterialView()
topImageViewCollection.grid.row = .Row6 topImageViewCollection.grid.rows = 6
topImageViewCollection.image = image topImageViewCollection.image = image
topImageViewCollection.contentsGravity = .ResizeAspectFill topImageViewCollection.contentsGravity = .ResizeAspectFill
rightImageViewCollection.addSubview(topImageViewCollection) rightImageViewCollection.addSubview(topImageViewCollection)
image = UIImage(named: "CosmicMindInverted") image = UIImage(named: "CosmicMindInverted")
let bottomImageViewCollection: MaterialView = MaterialView() let bottomImageViewCollection: MaterialView = MaterialView()
bottomImageViewCollection.grid.row = .Row6 bottomImageViewCollection.grid.rows = 6
bottomImageViewCollection.image = image bottomImageViewCollection.image = image
bottomImageViewCollection.contentsGravity = .ResizeAspectFill bottomImageViewCollection.contentsGravity = .ResizeAspectFill
rightImageViewCollection.addSubview(bottomImageViewCollection) rightImageViewCollection.addSubview(bottomImageViewCollection)
let contentView: MaterialView = MaterialView() let contentView: MaterialView = MaterialView()
contentView.grid.row = .Row5 contentView.grid.rows = 5
contentView.grid.axis = .Vertical contentView.grid.axis.direction = .Vertical
contentView.grid.contentInsetPreset = .Square3 contentView.grid.contentInsetPreset = .Square3
contentView.backgroundColor = MaterialColor.clear contentView.backgroundColor = MaterialColor.clear
cardView.addSubview(contentView) cardView.addSubview(contentView)
let titleView: MaterialView = MaterialView() let titleView: MaterialView = MaterialView()
titleView.grid.row = .Row1 titleView.grid.rows = 1
titleView.backgroundColor = MaterialColor.clear titleView.backgroundColor = MaterialColor.clear
contentView.addSubview(titleView) contentView.addSubview(titleView)
let titleLabel: UILabel = UILabel() let titleLabel: UILabel = UILabel()
titleLabel.grid.column = .Column7 titleLabel.grid.columns = 7
titleLabel.text = "Material" titleLabel.text = "Material"
titleLabel.textColor = MaterialColor.blueGrey.darken4 titleLabel.textColor = MaterialColor.blueGrey.darken4
titleLabel.backgroundColor = MaterialColor.clear titleLabel.backgroundColor = MaterialColor.clear
...@@ -115,8 +115,8 @@ class ViewController: UIViewController { ...@@ -115,8 +115,8 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_more_vert_white")?.imageWithRenderingMode(.AlwaysTemplate) image = UIImage(named: "ic_more_vert_white")?.imageWithRenderingMode(.AlwaysTemplate)
let moreButton: FlatButton = FlatButton() let moreButton: FlatButton = FlatButton()
moreButton.grid.column = .Column1 moreButton.grid.columns = 1
moreButton.grid.columnOffset = .Column4 moreButton.grid.offset.columns = 4
moreButton.contentInsetPreset = .None moreButton.contentInsetPreset = .None
moreButton.pulseColor = MaterialColor.blueGrey.darken4 moreButton.pulseColor = MaterialColor.blueGrey.darken4
moreButton.tintColor = MaterialColor.blueGrey.darken4 moreButton.tintColor = MaterialColor.blueGrey.darken4
...@@ -125,7 +125,7 @@ class ViewController: UIViewController { ...@@ -125,7 +125,7 @@ class ViewController: UIViewController {
titleView.addSubview(moreButton) titleView.addSubview(moreButton)
let detailLabel: UILabel = UILabel() let detailLabel: UILabel = UILabel()
detailLabel.grid.row = .Row3 detailLabel.grid.rows = 3
detailLabel.numberOfLines = 0 detailLabel.numberOfLines = 0
detailLabel.lineBreakMode = .ByTruncatingTail detailLabel.lineBreakMode = .ByTruncatingTail
detailLabel.font = RobotoFont.regularWithSize(12) detailLabel.font = RobotoFont.regularWithSize(12)
...@@ -135,12 +135,12 @@ class ViewController: UIViewController { ...@@ -135,12 +135,12 @@ class ViewController: UIViewController {
contentView.addSubview(detailLabel) contentView.addSubview(detailLabel)
let alarmView: MaterialView = MaterialView() let alarmView: MaterialView = MaterialView()
alarmView.grid.row = .Row1 alarmView.grid.rows = 1
alarmView.backgroundColor = MaterialColor.clear alarmView.backgroundColor = MaterialColor.clear
contentView.addSubview(alarmView) contentView.addSubview(alarmView)
let alarmLabel: UILabel = UILabel() let alarmLabel: UILabel = UILabel()
alarmLabel.grid.column = .Column7 alarmLabel.grid.columns = 7
alarmLabel.font = RobotoFont.regularWithSize(12) alarmLabel.font = RobotoFont.regularWithSize(12)
alarmLabel.text = "34 min" alarmLabel.text = "34 min"
alarmLabel.textColor = MaterialColor.blueGrey.darken4 alarmLabel.textColor = MaterialColor.blueGrey.darken4
...@@ -149,8 +149,8 @@ class ViewController: UIViewController { ...@@ -149,8 +149,8 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_alarm_white")?.imageWithRenderingMode(.AlwaysTemplate) image = UIImage(named: "ic_alarm_white")?.imageWithRenderingMode(.AlwaysTemplate)
let alarmButton: FlatButton = FlatButton() let alarmButton: FlatButton = FlatButton()
alarmButton.grid.column = .Column1 alarmButton.grid.columns = 1
alarmButton.grid.columnOffset = .Column4 alarmButton.grid.offset.columns = 4
alarmButton.contentInsetPreset = .None alarmButton.contentInsetPreset = .None
alarmButton.pulseColor = MaterialColor.blueGrey.darken4 alarmButton.pulseColor = MaterialColor.blueGrey.darken4
alarmButton.tintColor = MaterialColor.red.base alarmButton.tintColor = MaterialColor.red.base
...@@ -175,27 +175,27 @@ class ViewController: UIViewController { ...@@ -175,27 +175,27 @@ class ViewController: UIViewController {
var image: UIImage? = UIImage(named: "CosmicMindInverted") var image: UIImage? = UIImage(named: "CosmicMindInverted")
let imageView: MaterialView = MaterialView() let imageView: MaterialView = MaterialView()
imageView.grid.column = .Column6 imageView.grid.columns = 6
imageView.image = image imageView.image = image
imageView.contentsGravity = .ResizeAspectFill imageView.contentsGravity = .ResizeAspectFill
cardView.addSubview(imageView) cardView.addSubview(imageView)
let contentView: MaterialView = MaterialView() let contentView: MaterialView = MaterialView()
contentView.grid.column = .Column6 contentView.grid.columns = 6
contentView.grid.axis = .Vertical contentView.grid.axis.direction = .Vertical
contentView.grid.contentInsetPreset = .Square3 contentView.grid.contentInsetPreset = .Square3
contentView.grid.spacing = 8 contentView.grid.spacing = 8
contentView.backgroundColor = MaterialColor.clear contentView.backgroundColor = MaterialColor.clear
cardView.addSubview(contentView) cardView.addSubview(contentView)
let titleView: MaterialView = MaterialView() let titleView: MaterialView = MaterialView()
titleView.grid.column = .Column6 titleView.grid.columns = 6
titleView.grid.row = .Row2 titleView.grid.rows = 2
titleView.backgroundColor = MaterialColor.clear titleView.backgroundColor = MaterialColor.clear
contentView.addSubview(titleView) contentView.addSubview(titleView)
let titleLabel: UILabel = UILabel() let titleLabel: UILabel = UILabel()
titleLabel.grid.column = .Column5 titleLabel.grid.columns = 5
titleLabel.text = "Material" titleLabel.text = "Material"
titleLabel.textColor = MaterialColor.blueGrey.darken4 titleLabel.textColor = MaterialColor.blueGrey.darken4
titleLabel.backgroundColor = MaterialColor.clear titleLabel.backgroundColor = MaterialColor.clear
...@@ -203,7 +203,7 @@ class ViewController: UIViewController { ...@@ -203,7 +203,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_more_vert_white")?.imageWithRenderingMode(.AlwaysTemplate) image = UIImage(named: "ic_more_vert_white")?.imageWithRenderingMode(.AlwaysTemplate)
let moreButton: FlatButton = FlatButton() let moreButton: FlatButton = FlatButton()
moreButton.grid.column = .Column1 moreButton.grid.columns = 1
moreButton.contentInsetPreset = .None moreButton.contentInsetPreset = .None
moreButton.pulseColor = MaterialColor.blueGrey.darken4 moreButton.pulseColor = MaterialColor.blueGrey.darken4
moreButton.tintColor = MaterialColor.blueGrey.darken4 moreButton.tintColor = MaterialColor.blueGrey.darken4
...@@ -212,7 +212,7 @@ class ViewController: UIViewController { ...@@ -212,7 +212,7 @@ class ViewController: UIViewController {
titleView.addSubview(moreButton) titleView.addSubview(moreButton)
let detailLabel: UILabel = UILabel() let detailLabel: UILabel = UILabel()
detailLabel.grid.row = .Row8 detailLabel.grid.rows = 8
detailLabel.numberOfLines = 0 detailLabel.numberOfLines = 0
detailLabel.lineBreakMode = .ByTruncatingTail detailLabel.lineBreakMode = .ByTruncatingTail
detailLabel.font = RobotoFont.regularWithSize(12) detailLabel.font = RobotoFont.regularWithSize(12)
...@@ -222,13 +222,13 @@ class ViewController: UIViewController { ...@@ -222,13 +222,13 @@ class ViewController: UIViewController {
contentView.addSubview(detailLabel) contentView.addSubview(detailLabel)
let alarmView: MaterialView = MaterialView() let alarmView: MaterialView = MaterialView()
alarmView.grid.column = .Column6 alarmView.grid.columns = 6
alarmView.grid.row = .Row2 alarmView.grid.rows = 2
alarmView.backgroundColor = MaterialColor.clear alarmView.backgroundColor = MaterialColor.clear
contentView.addSubview(alarmView) contentView.addSubview(alarmView)
let alarmLabel: UILabel = UILabel() let alarmLabel: UILabel = UILabel()
alarmLabel.grid.column = .Column5 alarmLabel.grid.columns = 5
alarmLabel.font = RobotoFont.regularWithSize(12) alarmLabel.font = RobotoFont.regularWithSize(12)
alarmLabel.text = "34 min" alarmLabel.text = "34 min"
alarmLabel.textColor = MaterialColor.blueGrey.darken4 alarmLabel.textColor = MaterialColor.blueGrey.darken4
...@@ -237,7 +237,7 @@ class ViewController: UIViewController { ...@@ -237,7 +237,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_alarm_white")?.imageWithRenderingMode(.AlwaysTemplate) image = UIImage(named: "ic_alarm_white")?.imageWithRenderingMode(.AlwaysTemplate)
let alarmButton: FlatButton = FlatButton() let alarmButton: FlatButton = FlatButton()
alarmButton.grid.column = .Column1 alarmButton.grid.columns = 1
alarmButton.contentInsetPreset = .None alarmButton.contentInsetPreset = .None
alarmButton.pulseColor = MaterialColor.blueGrey.darken4 alarmButton.pulseColor = MaterialColor.blueGrey.darken4
alarmButton.tintColor = MaterialColor.red.base alarmButton.tintColor = MaterialColor.red.base
...@@ -260,27 +260,27 @@ class ViewController: UIViewController { ...@@ -260,27 +260,27 @@ class ViewController: UIViewController {
var image: UIImage? = UIImage(named: "CosmicMindInverted") var image: UIImage? = UIImage(named: "CosmicMindInverted")
let imageView: MaterialView = MaterialView() let imageView: MaterialView = MaterialView()
imageView.grid.column = .Column4 imageView.grid.columns = 4
imageView.image = image imageView.image = image
imageView.contentsGravity = .ResizeAspectFill imageView.contentsGravity = .ResizeAspectFill
cardView.addSubview(imageView) cardView.addSubview(imageView)
let contentView: MaterialView = MaterialView() let contentView: MaterialView = MaterialView()
contentView.grid.column = .Column8 contentView.grid.columns = 8
contentView.grid.axis = .Vertical contentView.grid.axis.direction = .Vertical
contentView.grid.contentInsetPreset = .Square3 contentView.grid.contentInsetPreset = .Square3
contentView.grid.spacing = 12 contentView.grid.spacing = 12
contentView.backgroundColor = MaterialColor.clear contentView.backgroundColor = MaterialColor.clear
cardView.addSubview(contentView) cardView.addSubview(contentView)
let titleView: MaterialView = MaterialView() let titleView: MaterialView = MaterialView()
titleView.grid.column = .Column8 titleView.grid.columns = 8
titleView.grid.row = .Row4 titleView.grid.rows = 4
titleView.backgroundColor = MaterialColor.clear titleView.backgroundColor = MaterialColor.clear
contentView.addSubview(titleView) contentView.addSubview(titleView)
let titleLabel: UILabel = UILabel() let titleLabel: UILabel = UILabel()
titleLabel.grid.column = .Column7 titleLabel.grid.columns = 7
titleLabel.text = "Material" titleLabel.text = "Material"
titleLabel.textColor = MaterialColor.blueGrey.darken4 titleLabel.textColor = MaterialColor.blueGrey.darken4
titleLabel.backgroundColor = MaterialColor.clear titleLabel.backgroundColor = MaterialColor.clear
...@@ -288,7 +288,7 @@ class ViewController: UIViewController { ...@@ -288,7 +288,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_more_vert_white")?.imageWithRenderingMode(.AlwaysTemplate) image = UIImage(named: "ic_more_vert_white")?.imageWithRenderingMode(.AlwaysTemplate)
let moreButton: FlatButton = FlatButton() let moreButton: FlatButton = FlatButton()
moreButton.grid.column = .Column1 moreButton.grid.columns = 1
moreButton.contentInsetPreset = .None moreButton.contentInsetPreset = .None
moreButton.pulseColor = MaterialColor.blueGrey.darken4 moreButton.pulseColor = MaterialColor.blueGrey.darken4
moreButton.tintColor = MaterialColor.blueGrey.darken4 moreButton.tintColor = MaterialColor.blueGrey.darken4
...@@ -297,7 +297,7 @@ class ViewController: UIViewController { ...@@ -297,7 +297,7 @@ class ViewController: UIViewController {
titleView.addSubview(moreButton) titleView.addSubview(moreButton)
let detailLabel: UILabel = UILabel() let detailLabel: UILabel = UILabel()
detailLabel.grid.row = .Row4 detailLabel.grid.rows = 4
detailLabel.numberOfLines = 0 detailLabel.numberOfLines = 0
detailLabel.lineBreakMode = .ByTruncatingTail detailLabel.lineBreakMode = .ByTruncatingTail
detailLabel.font = RobotoFont.regularWithSize(12) detailLabel.font = RobotoFont.regularWithSize(12)
...@@ -307,13 +307,13 @@ class ViewController: UIViewController { ...@@ -307,13 +307,13 @@ class ViewController: UIViewController {
contentView.addSubview(detailLabel) contentView.addSubview(detailLabel)
let alarmView: MaterialView = MaterialView() let alarmView: MaterialView = MaterialView()
alarmView.grid.column = .Column8 alarmView.grid.columns = 8
alarmView.grid.row = .Row4 alarmView.grid.rows = 4
alarmView.backgroundColor = MaterialColor.clear alarmView.backgroundColor = MaterialColor.clear
contentView.addSubview(alarmView) contentView.addSubview(alarmView)
let alarmLabel: UILabel = UILabel() let alarmLabel: UILabel = UILabel()
alarmLabel.grid.column = .Column7 alarmLabel.grid.columns = 7
alarmLabel.font = RobotoFont.regularWithSize(12) alarmLabel.font = RobotoFont.regularWithSize(12)
alarmLabel.text = "34 min" alarmLabel.text = "34 min"
alarmLabel.textColor = MaterialColor.blueGrey.darken4 alarmLabel.textColor = MaterialColor.blueGrey.darken4
...@@ -322,7 +322,7 @@ class ViewController: UIViewController { ...@@ -322,7 +322,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_alarm_white")?.imageWithRenderingMode(.AlwaysTemplate) image = UIImage(named: "ic_alarm_white")?.imageWithRenderingMode(.AlwaysTemplate)
let alarmButton: FlatButton = FlatButton() let alarmButton: FlatButton = FlatButton()
alarmButton.grid.column = .Column1 alarmButton.grid.columns = 1
alarmButton.contentInsetPreset = .None alarmButton.contentInsetPreset = .None
alarmButton.pulseColor = MaterialColor.blueGrey.darken4 alarmButton.pulseColor = MaterialColor.blueGrey.darken4
alarmButton.tintColor = MaterialColor.red.base alarmButton.tintColor = MaterialColor.red.base
...@@ -340,7 +340,7 @@ class ViewController: UIViewController { ...@@ -340,7 +340,7 @@ class ViewController: UIViewController {
private func prepareHorizontalGridViewExample() { private func prepareHorizontalGridViewExample() {
var image: UIImage? = UIImage(named: "ic_flash_auto_white")?.imageWithRenderingMode(.AlwaysTemplate) var image: UIImage? = UIImage(named: "ic_flash_auto_white")?.imageWithRenderingMode(.AlwaysTemplate)
let btn1: FlatButton = FlatButton() let btn1: FlatButton = FlatButton()
btn1.grid.column = .Column3 btn1.grid.columns = 3
btn1.pulseColor = MaterialColor.blueGrey.darken4 btn1.pulseColor = MaterialColor.blueGrey.darken4
btn1.tintColor = MaterialColor.blueGrey.darken4 btn1.tintColor = MaterialColor.blueGrey.darken4
btn1.backgroundColor = MaterialColor.grey.lighten3 btn1.backgroundColor = MaterialColor.grey.lighten3
...@@ -350,7 +350,7 @@ class ViewController: UIViewController { ...@@ -350,7 +350,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_flash_off_white")?.imageWithRenderingMode(.AlwaysTemplate) image = UIImage(named: "ic_flash_off_white")?.imageWithRenderingMode(.AlwaysTemplate)
let btn2: FlatButton = FlatButton() let btn2: FlatButton = FlatButton()
btn2.grid.column = .Column3 btn2.grid.columns = 3
btn2.pulseColor = MaterialColor.blueGrey.darken4 btn2.pulseColor = MaterialColor.blueGrey.darken4
btn2.tintColor = MaterialColor.blueGrey.darken4 btn2.tintColor = MaterialColor.blueGrey.darken4
btn2.backgroundColor = MaterialColor.grey.lighten3 btn2.backgroundColor = MaterialColor.grey.lighten3
...@@ -360,7 +360,7 @@ class ViewController: UIViewController { ...@@ -360,7 +360,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_flash_on_white")?.imageWithRenderingMode(.AlwaysTemplate) image = UIImage(named: "ic_flash_on_white")?.imageWithRenderingMode(.AlwaysTemplate)
let btn3: FlatButton = FlatButton() let btn3: FlatButton = FlatButton()
btn3.grid.column = .Column3 btn3.grid.columns = 4
btn3.pulseColor = MaterialColor.blueGrey.darken4 btn3.pulseColor = MaterialColor.blueGrey.darken4
btn3.tintColor = MaterialColor.blueGrey.darken4 btn3.tintColor = MaterialColor.blueGrey.darken4
btn3.backgroundColor = MaterialColor.grey.lighten3 btn3.backgroundColor = MaterialColor.grey.lighten3
...@@ -368,21 +368,23 @@ class ViewController: UIViewController { ...@@ -368,21 +368,23 @@ class ViewController: UIViewController {
btn3.setImage(image, forState: .Highlighted) btn3.setImage(image, forState: .Highlighted)
view.addSubview(btn3) view.addSubview(btn3)
let label1: MaterialLabel = MaterialLabel() let label1: UILabel = UILabel()
label1.text = "A" label1.text = "A"
label1.backgroundColor = MaterialColor.blue.base label1.backgroundColor = MaterialColor.red.base
label1.grid.columns = 2
view.addSubview(label1)
let label2: MaterialLabel = MaterialLabel() let label2: MaterialLabel = MaterialLabel()
label2.text = "B" label2.text = "B"
label2.backgroundColor = MaterialColor.blue.base label2.backgroundColor = MaterialColor.blue.base
view.grid.column = .Column9 // view.grid.columns = 9
view.grid.spacing = 16 view.grid.spacing = 16
view.grid.contentInset.left = 16 view.grid.contentInset.left = 16
view.grid.contentInset.right = 16 view.grid.contentInset.right = 16
view.grid.contentInset.top = 100 view.grid.contentInset.top = 100
view.grid.contentInset.bottom = 100 view.grid.contentInset.bottom = 100
view.grid.views = [btn1, btn2, btn3] view.grid.views = [btn1, btn2, label1, btn3]
for v in view.grid.views! { for v in view.grid.views! {
print(v.frame) print(v.frame)
...@@ -397,7 +399,7 @@ class ViewController: UIViewController { ...@@ -397,7 +399,7 @@ class ViewController: UIViewController {
private func prepareVerticalGridViewExample() { private func prepareVerticalGridViewExample() {
var image: UIImage? = UIImage(named: "ic_flash_auto_white")?.imageWithRenderingMode(.AlwaysTemplate) var image: UIImage? = UIImage(named: "ic_flash_auto_white")?.imageWithRenderingMode(.AlwaysTemplate)
let btn1: FlatButton = FlatButton() let btn1: FlatButton = FlatButton()
btn1.grid.row = .Row3 btn1.grid.rows = 3
btn1.pulseColor = MaterialColor.blueGrey.darken4 btn1.pulseColor = MaterialColor.blueGrey.darken4
btn1.tintColor = MaterialColor.blueGrey.darken4 btn1.tintColor = MaterialColor.blueGrey.darken4
btn1.backgroundColor = MaterialColor.grey.lighten3 btn1.backgroundColor = MaterialColor.grey.lighten3
...@@ -407,7 +409,7 @@ class ViewController: UIViewController { ...@@ -407,7 +409,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_flash_off_white")?.imageWithRenderingMode(.AlwaysTemplate) image = UIImage(named: "ic_flash_off_white")?.imageWithRenderingMode(.AlwaysTemplate)
let btn2: FlatButton = FlatButton() let btn2: FlatButton = FlatButton()
btn2.grid.row = .Row3 btn2.grid.rows = 3
btn2.pulseColor = MaterialColor.blueGrey.darken4 btn2.pulseColor = MaterialColor.blueGrey.darken4
btn2.tintColor = MaterialColor.blueGrey.darken4 btn2.tintColor = MaterialColor.blueGrey.darken4
btn2.backgroundColor = MaterialColor.grey.lighten3 btn2.backgroundColor = MaterialColor.grey.lighten3
...@@ -417,7 +419,7 @@ class ViewController: UIViewController { ...@@ -417,7 +419,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_flash_on_white")?.imageWithRenderingMode(.AlwaysTemplate) image = UIImage(named: "ic_flash_on_white")?.imageWithRenderingMode(.AlwaysTemplate)
let btn3: FlatButton = FlatButton() let btn3: FlatButton = FlatButton()
btn3.grid.row = .Row3 btn3.grid.rows = 3
btn3.pulseColor = MaterialColor.blueGrey.darken4 btn3.pulseColor = MaterialColor.blueGrey.darken4
btn3.tintColor = MaterialColor.blueGrey.darken4 btn3.tintColor = MaterialColor.blueGrey.darken4
btn3.backgroundColor = MaterialColor.grey.lighten3 btn3.backgroundColor = MaterialColor.grey.lighten3
...@@ -433,8 +435,8 @@ class ViewController: UIViewController { ...@@ -433,8 +435,8 @@ class ViewController: UIViewController {
label2.text = "B" label2.text = "B"
label2.backgroundColor = MaterialColor.blue.base label2.backgroundColor = MaterialColor.blue.base
view.grid.axis = .Vertical view.grid.axis.direction = .Vertical
view.grid.row = .Row9 view.grid.rows = 9
view.grid.spacing = 16 view.grid.spacing = 16
view.grid.contentInset.left = 16 view.grid.contentInset.left = 16
view.grid.contentInset.right = 16 view.grid.contentInset.right = 16
......
...@@ -30,70 +30,88 @@ ...@@ -30,70 +30,88 @@
import UIKit import UIKit
public enum GridRow : Int { public enum GridAxisDirection {
case Row1 = 1
case Row2 = 2
case Row3 = 3
case Row4 = 4
case Row5 = 5
case Row6 = 6
case Row7 = 7
case Row8 = 8
case Row9 = 9
case Row10 = 10
case Row11 = 11
case Row12 = 12
}
public enum GridColumn : Int {
case Column1 = 1
case Column2 = 2
case Column3 = 3
case Column4 = 4
case Column5 = 5
case Column6 = 6
case Column7 = 7
case Column8 = 8
case Column9 = 9
case Column10 = 10
case Column11 = 11
case Column12 = 12
}
public enum GridAxis {
case Horizontal case Horizontal
case Vertical case Vertical
} }
public class Grid { public class GridAxis {
/// The row size. /// Grid reference.
public var row: GridRow { unowned var grid: Grid
/// Inherit grid rows and columns.
public var inherited: Bool = true
/// The direction the grid layouts its views out.
public var direction: GridAxisDirection = .Horizontal
/// The rows size.
public var rows: Int {
didSet { didSet {
reloadLayout() grid.reloadLayout()
} }
} }
/// The row size. /// The columns size.
public var rowOffset: GridRow? { public var columns: Int {
didSet { didSet {
reloadLayout() grid.reloadLayout()
}
}
public init(grid: Grid, rows: Int = 12, columns: Int = 12) {
self.grid = grid
self.rows = rows
self.columns = columns
}
}
public class GridOffset {
/// Grid reference.
unowned var grid: Grid
/// The rows size.
public var rows: Int {
didSet {
grid.reloadLayout()
} }
} }
/// The column size. /// The columns size.
public var column: GridColumn { public var columns: Int {
didSet {
grid.reloadLayout()
}
}
public init(grid: Grid, rows: Int = 0, columns: Int = 0) {
self.grid = grid
self.rows = rows
self.columns = columns
}
}
public class Grid {
/// The rows size.
public var rows: Int {
didSet { didSet {
reloadLayout() reloadLayout()
} }
} }
/// The column size. /// The columns size.
public var columnOffset: GridColumn? { public var columns: Int {
didSet { didSet {
reloadLayout() reloadLayout()
} }
} }
/// Offsets for rows and columns.
public private(set) var offset: GridOffset!
/// The axis in which the Grid is laying out its views.
public private(set) var axis: GridAxis!
/// Preset inset value for grid. /// Preset inset value for grid.
public var contentInsetPreset: MaterialEdgeInsetPreset = .None { public var contentInsetPreset: MaterialEdgeInsetPreset = .None {
didSet { didSet {
...@@ -108,20 +126,13 @@ public class Grid { ...@@ -108,20 +126,13 @@ public class Grid {
} }
} }
/// The space between grid columns. /// The space between grid columnss.
public var spacing: CGFloat { public var spacing: CGFloat {
didSet { didSet {
reloadLayout() reloadLayout()
} }
} }
/// The axis in which the Grid is laying out its views.
public var axis: GridAxis = .Horizontal {
didSet {
reloadLayout()
}
}
/// An Array of UIButtons. /// An Array of UIButtons.
public var views: Array<UIView>? { public var views: Array<UIView>? {
didSet { didSet {
...@@ -129,10 +140,12 @@ public class Grid { ...@@ -129,10 +140,12 @@ public class Grid {
} }
} }
public init(row: GridRow = .Row12, column: GridColumn = .Column12, spacing: CGFloat = 0) { public init(rows: Int = 12, columns: Int = 12, spacing: CGFloat = 0) {
self.row = row self.rows = rows
self.column = column self.columns = columns
self.spacing = spacing self.spacing = spacing
self.offset = GridOffset(grid: self)
self.axis = GridAxis(grid: self)
} }
/// Reload the button layout. /// Reload the button layout.
...@@ -143,13 +156,13 @@ public class Grid { ...@@ -143,13 +156,13 @@ public class Grid {
for var i: Int = 0, l: Int = v.count - 1; i <= l; ++i { for var i: Int = 0, l: Int = v.count - 1; i <= l; ++i {
let view: UIView = v[i] let view: UIView = v[i]
if let sv: UIView = view.superview { if let sv: UIView = view.superview {
let w: CGFloat = (sv.bounds.width - contentInset.left - contentInset.right + spacing) / CGFloat(column.rawValue) let w: CGFloat = (sv.bounds.width - contentInset.left - contentInset.right + spacing) / CGFloat(axis.inherited ? columns : axis.columns)
let h: CGFloat = (sv.bounds.height - contentInset.top - contentInset.bottom + spacing) / CGFloat(row.rawValue) let h: CGFloat = (sv.bounds.height - contentInset.top - contentInset.bottom + spacing) / CGFloat(axis.inherited ? rows : axis.rows)
let c: Int = view.grid.column.rawValue let c: Int = view.grid.columns
let r: Int = view.grid.row.rawValue let r: Int = view.grid.rows
let co: Int = nil == view.grid.columnOffset ? 0 : view.grid.columnOffset!.rawValue let co: Int = view.grid.offset.columns
let ro: Int = nil == view.grid.rowOffset ? 0 : view.grid.rowOffset!.rawValue let ro: Int = view.grid.offset.rows
if .Horizontal == axis { if .Horizontal == axis.direction {
// View height. // View height.
let vh: CGFloat = sv.bounds.height - contentInset.top - contentInset.bottom let vh: CGFloat = sv.bounds.height - contentInset.top - contentInset.bottom
...@@ -167,7 +180,9 @@ public class Grid { ...@@ -167,7 +180,9 @@ public class Grid {
} else { } else {
view.frame = CGRectMake(vl, contentInset.top, vw, vh) view.frame = CGRectMake(vl, contentInset.top, vw, vh)
} }
} else if .Vertical == axis {
n += c + co - 1
} else if .Vertical == axis.direction {
// View width. // View width.
let vw: CGFloat = sv.bounds.width - contentInset.left - contentInset.right let vw: CGFloat = sv.bounds.width - contentInset.left - contentInset.right
...@@ -184,17 +199,17 @@ public class Grid { ...@@ -184,17 +199,17 @@ public class Grid {
} else { } else {
view.frame = CGRectMake(contentInset.left, vt, vw, vh) view.frame = CGRectMake(contentInset.left, vt, vw, vh)
} }
m += r + ro - 1
} }
n += c + co - 1
m += r + ro - 1
} }
} }
} }
} }
} }
private func associatedObject<ValueType: AnyObject>(base: AnyObject, key: UnsafePointer<UInt8>, initialiser: () -> ValueType) -> ValueType { private func associatedObject<T: AnyObject>(base: AnyObject, key: UnsafePointer<UInt8>, initialiser: () -> T) -> T {
if let associated = objc_getAssociatedObject(base, key) as? ValueType { if let associated: T = objc_getAssociatedObject(base, key) as? T {
return associated return associated
} }
...@@ -203,7 +218,7 @@ private func associatedObject<ValueType: AnyObject>(base: AnyObject, key: Unsafe ...@@ -203,7 +218,7 @@ private func associatedObject<ValueType: AnyObject>(base: AnyObject, key: Unsafe
return associated return associated
} }
private func associateObject<ValueType: AnyObject>(base: AnyObject, key: UnsafePointer<UInt8>, value: ValueType) { private func associateObject<T: AnyObject>(base: AnyObject, key: UnsafePointer<UInt8>, value: T) {
objc_setAssociatedObject(base, key, value, .OBJC_ASSOCIATION_RETAIN) objc_setAssociatedObject(base, key, value, .OBJC_ASSOCIATION_RETAIN)
} }
...@@ -212,7 +227,9 @@ private var gridKey: UInt8 = 0 ...@@ -212,7 +227,9 @@ private var gridKey: UInt8 = 0
public extension UIView { public extension UIView {
public var grid: Grid { public var grid: Grid {
get { get {
return associatedObject(self, key: &gridKey) { return Grid() } return associatedObject(self, key: &gridKey) {
return Grid()
}
} }
set(value) { set(value) {
associateObject(self, key: &gridKey, value: value) associateObject(self, key: &gridKey, value: value)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment