Commit 48b9d4e9 by Daniel Dahan

updated visual format logic for BasicCard

parent 22da2736
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
// //
import UIKit import UIKit
import QuartzCore
public class BasicCard : MaterialCard { public class BasicCard : MaterialCard {
// //
...@@ -30,51 +29,76 @@ public class BasicCard : MaterialCard { ...@@ -30,51 +29,76 @@ public class BasicCard : MaterialCard {
// //
internal lazy var views: Dictionary<String, AnyObject> = Dictionary<String, AnyObject>() internal lazy var views: Dictionary<String, AnyObject> = Dictionary<String, AnyObject>()
//
// :name: detailTextContainer
//
internal var detailTextContainer: UIView?
//
// :name: buttonsContainer
//
internal var buttonsContainer: UIView?
/** /**
:name: titleLabel :name: titleLabel
*/ */
public var titleLabel: UILabel? { public var titleLabel: UILabel? {
didSet { didSet {
titleLabel!.setTranslatesAutoresizingMaskIntoConstraints(false) titleLabel!.setTranslatesAutoresizingMaskIntoConstraints(false)
titleLabel!.textColor = MaterialTheme.white.color titleLabel!.textColor = MaterialTheme.white.color
titleLabel!.font = Roboto.regularWithSize(22) titleLabel!.font = Roboto.regularWithSize(24)
addSubview(titleLabel!) addSubview(titleLabel!)
prepareCard() prepareCard()
} }
} }
/** /**
:name: detailTextLabel :name: detailTextLabel
*/ */
public var detailTextLabel: UILabel? { public var detailTextLabel: UILabel? {
didSet { didSet {
// container
if nil == detailTextContainer {
detailTextContainer = UIView()
detailTextContainer!.setTranslatesAutoresizingMaskIntoConstraints(false)
detailTextContainer!.backgroundColor = MaterialTheme.white.color
addSubview(detailTextContainer!)
}
// text
detailTextContainer!.addSubview(detailTextLabel!)
detailTextLabel!.setTranslatesAutoresizingMaskIntoConstraints(false) detailTextLabel!.setTranslatesAutoresizingMaskIntoConstraints(false)
detailTextLabel!.textColor = MaterialTheme.white.color detailTextLabel!.textColor = MaterialTheme.black.color
detailTextLabel!.font = Roboto.lightWithSize(16) detailTextLabel!.font = Roboto.lightWithSize(14)
detailTextLabel!.numberOfLines = 0 detailTextLabel!.numberOfLines = 0
detailTextLabel!.lineBreakMode = .ByWordWrapping detailTextLabel!.lineBreakMode = .ByWordWrapping
addSubview(detailTextLabel!)
prepareCard() prepareCard()
} }
} }
/** /**
:name: divider :name: divider
*/ */
public var divider: UIView? { public var divider: UIView? {
didSet { didSet {
divider!.setTranslatesAutoresizingMaskIntoConstraints(false) divider!.setTranslatesAutoresizingMaskIntoConstraints(false)
divider!.backgroundColor = MaterialTheme.blueGrey.darken2 divider!.backgroundColor = MaterialTheme.blueGrey.lighten4
addSubview(divider!) addSubview(divider!)
prepareCard() prepareCard()
} }
} }
/** /**
:name: buttons :name: buttons
*/ */
public var buttons: Array<MaterialButton>? { public var buttons: Array<MaterialButton>? {
didSet { didSet {
if nil == buttonsContainer {
buttonsContainer = UIView()
buttonsContainer!.setTranslatesAutoresizingMaskIntoConstraints(false)
buttonsContainer!.backgroundColor = MaterialTheme.white.color
addSubview(buttonsContainer!)
}
prepareCard() prepareCard()
} }
} }
...@@ -85,7 +109,7 @@ public class BasicCard : MaterialCard { ...@@ -85,7 +109,7 @@ public class BasicCard : MaterialCard {
internal override func prepareView() { internal override func prepareView() {
super.prepareView() super.prepareView()
prepareShadow() prepareShadow()
backgroundColor = MaterialTheme.blueGrey.darken1 backgroundColor = MaterialTheme.clear.color
} }
// //
...@@ -103,42 +127,51 @@ public class BasicCard : MaterialCard { ...@@ -103,42 +127,51 @@ public class BasicCard : MaterialCard {
// title // title
if nil != titleLabel { if nil != titleLabel {
layoutConstraints += Layout.constraint("H:|-(16)-[titleLabel]-(16)-|", options: nil, metrics: nil, views: ["titleLabel": titleLabel!]) layoutConstraints += Layout.constraint("H:|-(16)-[titleLabel]-(16)-|", options: nil, metrics: nil, views: ["titleLabel": titleLabel!])
verticalFormat += "-(16)-[titleLabel(22)]" verticalFormat += "-(16)-[titleLabel(24)]"
views["titleLabel"] = titleLabel! views["titleLabel"] = titleLabel!
} }
// details // details
if nil != detailTextLabel { if nil != detailTextContainer && nil != detailTextLabel {
layoutConstraints += Layout.constraint("H:|-(16)-[detailTextLabel]-(16)-|", options: nil, metrics: nil, views: ["detailTextLabel": detailTextLabel!]) // container
verticalFormat += "-(16)-[detailTextLabel]" layoutConstraints += Layout.constraint("H:|[detailTextContainer]|", options: nil, metrics: nil, views: ["detailTextContainer": detailTextContainer!])
views["detailTextLabel"] = detailTextLabel! verticalFormat += "[detailTextContainer]"
views["detailTextContainer"] = detailTextContainer!
// text
detailTextContainer!.addConstraints(Layout.constraint("H:|-(16)-[detailTextLabel]-(16)-|", options: nil, metrics: nil, views: ["detailTextLabel": detailTextLabel!]))
detailTextContainer!.addConstraints(Layout.constraint("V:|-(16)-[detailTextLabel(<=128)]|", options: nil, metrics: nil, views: ["detailTextLabel": detailTextLabel!]))
} }
if nil != buttons { if nil != buttons && nil != buttonsContainer {
// divider // divider
if nil != divider { if nil != divider {
layoutConstraints += Layout.constraint("H:|[divider]|", options: nil, metrics: nil, views: ["divider": divider!]) layoutConstraints += Layout.constraint("H:|[divider]|", options: nil, metrics: nil, views: ["divider": divider!])
views["divider"] = divider! views["divider"] = divider!
verticalFormat += "-(16)-[divider(1)]" verticalFormat += "[divider(1)]"
} }
//container
layoutConstraints += Layout.constraint("H:|[buttonsContainer]|", options: nil, metrics: nil, views: ["buttonsContainer": buttonsContainer!])
verticalFormat += "[buttonsContainer]"
views["buttonsContainer"] = buttonsContainer!
// buttons // buttons
var horizontalFormat: String = "H:|" var horizontalFormat: String = "H:|"
var buttonViews: Dictionary<String, AnyObject> = Dictionary<String, AnyObject>() var buttonViews: Dictionary<String, AnyObject> = Dictionary<String, AnyObject>()
for var i: Int = 0, l: Int = buttons!.count; i < l; ++i { for var i: Int = 0, l: Int = buttons!.count; i < l; ++i {
let button: MaterialButton = buttons![i] let button: MaterialButton = buttons![i]
addSubview(button) buttonsContainer!.addSubview(button)
buttonViews["button\(i)"] = button buttonViews["button\(i)"] = button
views["button\(i)"] = button as AnyObject
horizontalFormat += "-(8)-[button\(i)]" horizontalFormat += "-(8)-[button\(i)]"
layoutConstraints += Layout.constraint(verticalFormat + "-(8)-[button\(i)]-(8)-|", options: nil, metrics: nil, views: views) Layout.expandToParentVerticallyWithPad(buttonsContainer!, child: button, top: 8, bottom: 8)
buttonsContainer!.addConstraints(Layout.constraint(horizontalFormat, options: nil, metrics: nil, views: buttonViews))
} }
layoutConstraints += Layout.constraint(horizontalFormat, options: nil, metrics: nil, views: buttonViews) layoutConstraints += Layout.constraint(horizontalFormat, options: nil, metrics: nil, views: buttonViews)
} else {
verticalFormat += "-(16)-|"
} }
verticalFormat += "|"
// combine constraints // combine constraints
if 0 < layoutConstraints.count { if 0 < layoutConstraints.count {
layoutConstraints += Layout.constraint(verticalFormat, options: nil, metrics: nil, views: views) layoutConstraints += Layout.constraint(verticalFormat, options: nil, metrics: nil, views: views)
......
...@@ -114,10 +114,9 @@ public class MaterialCard : UIView { ...@@ -114,10 +114,9 @@ public class MaterialCard : UIView {
// //
internal func prepareShadow() { internal func prepareShadow() {
layer.shadowColor = MaterialTheme.black.color.CGColor layer.shadowColor = MaterialTheme.black.color.CGColor
layer.shadowOffset = CGSizeMake(0.5, 0.5) layer.shadowOffset = CGSizeMake(0.05, 0.05)
layer.shadowOpacity = 0.5 layer.shadowOpacity = 0.1
layer.shadowRadius = 5 layer.shadowRadius = 3
layer.cornerRadius = 2
} }
// //
......
...@@ -21,7 +21,7 @@ import UIKit ...@@ -21,7 +21,7 @@ import UIKit
public struct MaterialTheme { public struct MaterialTheme {
// clear // clear
public struct clear { public struct clear {
public static let color: UIColor = white.color.colorWithAlphaComponent(0) public static let color: UIColor = UIColor.clearColor()
} }
// white // white
......
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