Commit 0dd6009b by Daniel Dahan

added column and row offset to Grid

parent 41b95b74
......@@ -60,13 +60,13 @@ class ViewController: UIViewController {
var image: UIImage? = UIImage(named: "CosmicMindInverted")
let imageView: MaterialView = MaterialView()
imageView.grid.column = .Cell4
imageView.grid.column = .Column4
imageView.image = image
imageView.contentsGravity = .ResizeAspectFill
cardView.addSubview(imageView)
let contentView: MaterialView = MaterialView()
contentView.grid.column = .Cell8
contentView.grid.column = .Column8
contentView.grid.layout = .Vertical
contentView.grid.contentInsetPreset = .Square3
contentView.grid.spacing = 16
......@@ -74,21 +74,21 @@ class ViewController: UIViewController {
cardView.addSubview(contentView)
let titleView: MaterialView = MaterialView()
titleView.grid.column = .Cell8
titleView.grid.row = .Cell3
titleView.grid.column = .Column8
titleView.grid.row = .Row3
titleView.backgroundColor = MaterialColor.clear
contentView.addSubview(titleView)
let titleLabel: UILabel = UILabel()
titleLabel.grid.column = .Cell7
titleLabel.text = "Title"
titleLabel.grid.column = .Column7
titleLabel.text = "Material"
titleLabel.textColor = MaterialColor.blueGrey.darken4
titleLabel.backgroundColor = MaterialColor.clear
titleView.addSubview(titleLabel)
image = UIImage(named: "ic_more_vert_white")?.imageWithRenderingMode(.AlwaysTemplate)
let moreButton: FlatButton = FlatButton()
moreButton.grid.column = .Cell1
moreButton.grid.column = .Column1
moreButton.contentInsetPreset = .None
moreButton.pulseColor = MaterialColor.blueGrey.darken4
moreButton.tintColor = MaterialColor.blueGrey.darken4
......@@ -97,23 +97,23 @@ class ViewController: UIViewController {
titleView.addSubview(moreButton)
let detailLabel: UILabel = UILabel()
detailLabel.grid.row = .Cell6
detailLabel.grid.row = .Row6
detailLabel.numberOfLines = 0
detailLabel.lineBreakMode = .ByTruncatingTail
detailLabel.font = RobotoFont.regularWithSize(12)
detailLabel.text = "There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable."
detailLabel.text = "Material is a graphics and animation framework for Google's Material Design. It is designed to allow the creativity of others to easily be expressed."
detailLabel.textColor = MaterialColor.blueGrey.darken4
detailLabel.backgroundColor = MaterialColor.clear
contentView.addSubview(detailLabel)
let alarmView: MaterialView = MaterialView()
alarmView.grid.column = .Cell8
alarmView.grid.row = .Cell3
alarmView.grid.column = .Column8
alarmView.grid.row = .Row3
alarmView.backgroundColor = MaterialColor.clear
contentView.addSubview(alarmView)
let alarmLabel: UILabel = UILabel()
alarmLabel.grid.column = .Cell7
alarmLabel.grid.column = .Column7
alarmLabel.font = RobotoFont.regularWithSize(12)
alarmLabel.text = "34 min"
alarmLabel.textColor = MaterialColor.blueGrey.darken4
......@@ -122,7 +122,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_alarm_white")?.imageWithRenderingMode(.AlwaysTemplate)
let alarmButton: FlatButton = FlatButton()
alarmButton.grid.column = .Cell1
alarmButton.grid.column = .Column1
alarmButton.contentInsetPreset = .None
alarmButton.pulseColor = MaterialColor.blueGrey.darken4
alarmButton.tintColor = MaterialColor.red.base
......@@ -140,7 +140,7 @@ class ViewController: UIViewController {
private func prepareHorizontalGridViewExample() {
var image: UIImage? = UIImage(named: "ic_flash_auto_white")?.imageWithRenderingMode(.AlwaysTemplate)
let btn1: FlatButton = FlatButton()
btn1.grid.column = .Cell3
btn1.grid.column = .Column3
btn1.pulseColor = MaterialColor.blueGrey.darken4
btn1.tintColor = MaterialColor.blueGrey.darken4
btn1.backgroundColor = MaterialColor.grey.lighten3
......@@ -150,7 +150,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_flash_off_white")?.imageWithRenderingMode(.AlwaysTemplate)
let btn2: FlatButton = FlatButton()
btn2.grid.column = .Cell3
btn2.grid.column = .Column3
btn2.pulseColor = MaterialColor.blueGrey.darken4
btn2.tintColor = MaterialColor.blueGrey.darken4
btn2.backgroundColor = MaterialColor.grey.lighten3
......@@ -160,7 +160,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_flash_on_white")?.imageWithRenderingMode(.AlwaysTemplate)
let btn3: FlatButton = FlatButton()
btn3.grid.column = .Cell3
btn3.grid.column = .Column3
btn3.pulseColor = MaterialColor.blueGrey.darken4
btn3.tintColor = MaterialColor.blueGrey.darken4
btn3.backgroundColor = MaterialColor.grey.lighten3
......@@ -176,7 +176,7 @@ class ViewController: UIViewController {
label2.text = "B"
label2.backgroundColor = MaterialColor.blue.base
view.grid.column = .Cell9
view.grid.column = .Column9
view.grid.spacing = 16
view.grid.contentInset.left = 16
view.grid.contentInset.right = 16
......@@ -197,7 +197,7 @@ class ViewController: UIViewController {
private func prepareVerticalGridViewExample() {
var image: UIImage? = UIImage(named: "ic_flash_auto_white")?.imageWithRenderingMode(.AlwaysTemplate)
let btn1: FlatButton = FlatButton()
btn1.grid.row = .Cell3
btn1.grid.row = .Row3
btn1.pulseColor = MaterialColor.blueGrey.darken4
btn1.tintColor = MaterialColor.blueGrey.darken4
btn1.backgroundColor = MaterialColor.grey.lighten3
......@@ -207,7 +207,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_flash_off_white")?.imageWithRenderingMode(.AlwaysTemplate)
let btn2: FlatButton = FlatButton()
btn2.grid.row = .Cell3
btn2.grid.row = .Row3
btn2.pulseColor = MaterialColor.blueGrey.darken4
btn2.tintColor = MaterialColor.blueGrey.darken4
btn2.backgroundColor = MaterialColor.grey.lighten3
......@@ -217,7 +217,7 @@ class ViewController: UIViewController {
image = UIImage(named: "ic_flash_on_white")?.imageWithRenderingMode(.AlwaysTemplate)
let btn3: FlatButton = FlatButton()
btn3.grid.row = .Cell3
btn3.grid.row = .Row3
btn3.pulseColor = MaterialColor.blueGrey.darken4
btn3.tintColor = MaterialColor.blueGrey.darken4
btn3.backgroundColor = MaterialColor.grey.lighten3
......@@ -234,7 +234,7 @@ class ViewController: UIViewController {
label2.backgroundColor = MaterialColor.blue.base
view.grid.layout = .Vertical
view.grid.row = .Cell9
view.grid.row = .Row9
view.grid.spacing = 16
view.grid.contentInset.left = 16
view.grid.contentInset.right = 16
......
......@@ -30,19 +30,34 @@
import UIKit
public enum Cell : Int {
case Cell1 = 1
case Cell2 = 2
case Cell3 = 3
case Cell4 = 4
case Cell5 = 5
case Cell6 = 6
case Cell7 = 7
case Cell8 = 8
case Cell9 = 9
case Cell10 = 10
case Cell11 = 11
case Cell12 = 12
public enum GridRow : Int {
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 GridLayout {
......@@ -50,24 +65,30 @@ public enum GridLayout {
case Vertical
}
public protocol GridCell {
/// Grid column size.
var column: Cell { get set }
/// Grid row size.
var row: Cell { get set }
}
public class Grid {
/// The row size.
public var row: Cell {
public var row: GridRow {
didSet {
reloadLayout()
}
}
/// The row size.
public var rowOffset: GridRow? {
didSet {
reloadLayout()
}
}
/// The column size.
public var column: GridColumn {
didSet {
reloadLayout()
}
}
/// The column size.
public var column: Cell {
public var columnOffset: GridColumn? {
didSet {
reloadLayout()
}
......@@ -108,7 +129,7 @@ public class Grid {
}
}
public init(row: Cell = .Cell12, column: Cell = .Cell12, spacing: CGFloat = 0) {
public init(row: GridRow = .Row12, column: GridColumn = .Column12, spacing: CGFloat = 0) {
self.row = row
self.column = column
self.spacing = spacing
......@@ -126,13 +147,15 @@ public class Grid {
let h: CGFloat = (sv.bounds.height - contentInset.top - contentInset.bottom + spacing) / CGFloat(row.rawValue)
let c: Int = view.grid.column.rawValue
let r: Int = view.grid.row.rawValue
let co: Int = nil == view.grid.columnOffset ? 0 : view.grid.columnOffset!.rawValue
let ro: Int = nil == view.grid.rowOffset ? 0 : view.grid.rowOffset!.rawValue
if .Horizontal == layout {
// View height.
let vh: CGFloat = sv.bounds.height - contentInset.top - contentInset.bottom
// View left.
let vl: CGFloat = CGFloat(i + n) * w + contentInset.left
let vl: CGFloat = CGFloat(i + n + co) * w + contentInset.left
// View width.
let vw: CGFloat = (w * CGFloat(c)) - spacing
......@@ -149,7 +172,7 @@ public class Grid {
let vw: CGFloat = sv.bounds.width - contentInset.left - contentInset.right
// View top.
let vt: CGFloat = CGFloat(i + m) * h + contentInset.top
let vt: CGFloat = CGFloat(i + m + ro) * h + contentInset.top
// View height.
let vh: CGFloat = (h * CGFloat(r)) - spacing
......@@ -162,8 +185,8 @@ public class Grid {
view.frame = CGRectMake(contentInset.left, vt, vw, vh)
}
}
n += c - 1
m += r - 1
n += c + co - 1
m += r + ro - 1
}
}
}
......
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