What you need to know are isKindOfClass:
and class
:
A *a = [[A alloc] init];
Class AClass = [A class];
BOOL isAClass1 = [a isKindOfClass:[A class]];
addObserver(IPHONE_DID_UNLOCKED) {
if isOnSkin {
locked = false
}
}
addObserver(WATCH_OFF_SKIN) {
locked = true
}
//: Playground - noun: a place where people can play | |
// 1. Proposed Error Handling | |
enum Error: ErrorType { | |
case IsNegative(String) | |
case IsPositive(String) | |
} | |
func isZero(number: Int) -> Error? { | |
if number != 0 { |
subviewA.translatesAutoresizingMaskIntoConstraints = false // 這是純程式碼寫 Auto Layout 的大雷:必須設定這一行! | |
view.addSubview(subviewA) | |
var constraints = [NSLayoutConstraint]() | |
constraints.append(NSLayoutConstraint(item: subviewA, attribute: .centerX, relatedBy: .equal, | |
toItem: view, attribute: .centerX, multiplier: 1.0, constant: 0)) | |
// subviewA.centerX = 1.0 * view.centerX + 0 即 subviewA.centerX = view.centerX | |
constraints.append(NSLayoutConstraint(item: subviewA, attribute: .centerY, relatedBy: .equal, | |
toItem: view, attribute: .centerY, multiplier: 1.0, constant: 0)) | |
// subviewA.centerY = 1.0 * view.centerY + 0 即 subviewA.centerY = view.centerY | |
constraints.append(NSLayoutConstraint(item: subviewA, attribute: .width, relatedBy: .equal, |
subviewB.translatesAutoresizingMaskIntoConstraints = false | |
view.addSubview(subviewB) | |
constraints.append(NSLayoutConstraint(item: subviewB, attribute: .top, relatedBy: .equal, | |
toItem: view, attribute: .top, multiplier: 1.0, constant: 150)) | |
// subviewA.top = 1.0 * view.top + 150 | |
constraints.append(NSLayoutConstraint(item: subviewB, attribute: .bottom, relatedBy: .equal, | |
toItem: view, attribute: .bottom, multiplier: 1.0, constant: -150)) | |
// subviewA.bottom = 1.0 * view.bottom - 150 | |
constraints.append(NSLayoutConstraint(item: subviewB, attribute: .left, relatedBy: .equal, | |
toItem: view, attribute: .left, multiplier: 1.0, constant: 100)) |
subviewC.translatesAutoresizingMaskIntoConstraints = false | |
view.addSubview(subviewC) | |
constraints.append(subviewC.centerXAnchor.constraint(equalTo: view.centerXAnchor)) | |
constraints.append(subviewC.centerYAnchor.constraint(equalTo: view.centerYAnchor)) | |
constraints.append(subviewC.widthAnchor.constraint(equalToConstant: 200)) | |
constraints.append(subviewC.heightAnchor.constraint(equalToConstant: 100)) |
let viewsDictB = ["subviewB": subviewB] | |
constraints += NSLayoutConstraint.constraints(withVisualFormat: "V:|-(150)-[subviewB]-(150)-|", | |
options: [], metrics: nil, views: viewsDictB) | |
// V: Vertical | |
constraints += NSLayoutConstraint.constraints(withVisualFormat: "H:|-(100)-[subviewB]-(100)-|", | |
options: [], metrics: nil, views: viewsDictB) | |
// H: Horizontal |
let metrics = ["v": 150, "h": 100] | |
let viewsDictB = ["subview": subviewB] | |
constraints += NSLayoutConstraint.constraints(withVisualFormat: "V:|-(v)-[subview]-(v)-|", | |
options: [], metrics: metrics, views: viewsDictB) | |
constraints += NSLayoutConstraint.constraints(withVisualFormat: "H:|-(h)-[subview]-(h)-|", | |
options: [], metrics: metrics, views: viewsDictB) |
let viewsDictA = ["subviewA": subviewA] | |
constraints.append(subviewA.centerXAnchor.constraint(equalTo: view.centerXAnchor)) | |
constraints.append(subviewA.centerYAnchor.constraint(equalTo: view.centerYAnchor)) | |
// width | |
constraints += NSLayoutConstraint.constraints(withVisualFormat: "H:[subviewA(200)]", | |
options: [], metrics: nil, views: viewsDictA) | |
// height | |
constraints += NSLayoutConstraint.constraints(withVisualFormat: "V:[subviewA(100)]", | |
options: [], metrics: nil, views: viewsDictA) |
let metrics = ["p": 15] // padding | |
let viewsDict = ["subview1": subview1, "subview2": subview2, "subview3": subview3] | |
constraints += NSLayoutConstraint.constraints(withVisualFormat: "H:|-(p)-[subview1(100)]-(10)-[subview2(120)]-(10)-[subview3]-(p)-|", | |
options: [], metrics: metrics, views: viewsDict) | |
constraints += NSLayoutConstraint.constraints(withVisualFormat: "V:|-(p)-[subview1]-(p)-|", | |
options: [], metrics: metrics, views: viewsDict) | |
constraints += NSLayoutConstraint.constraints(withVisualFormat: "V:|-(p)-[subview2]-(p)-|", | |
options: [], metrics: metrics, views: viewsDict) | |
constraints += NSLayoutConstraint.constraints(withVisualFormat: "V:|-(p)-[subview3]-(p)-|", | |
options: [], metrics: metrics, views: viewsDict) |