Я пытаюсь обновить свой взгляд, когда его границы меняются. Мой взгляд выставляется с помощью Auto Layout в своем супервизоре.Границы всегда равны нулю с помощью автоматического макета
Вот мой код для наблюдения за границами:
public override init() {
super.init()
self.addObserver(self, forKeyPath: "bounds", options: .New, context: nil)
}
public override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
NSLog("[SkewedSplitView]: observer: %fx%f, %f:%f", self.bounds.width, self.bounds.height, self.bounds.origin.x, self.bounds.origin.y)
}
Выход:
2014-12-02 12: 35: 35,018 XXX [7365: 2001261] [SkewedSplitView]: наблюдатель: 0.000000x0.000000, 0,000000: 0,000000
Я попытался даже Swits наблюдатели:
override public var bounds: CGRect {
didSet {
NSLog("[SkewedSplitView]: bounds: %fx%f, %f:%f", self.frame.width, self.frame.height, self.frame.origin.x, self.frame.origin.y)
}
}
Выход:
2014-12-02 12: 35: 35,012 XXX [7365: 2001261] [SkewedSplitView]: оценки: 0.000000x0.000000, 0.000000: 0,000000
Оба были вызваны только один раз. Heres мой код, который выкладывает вид (с помощью Картография):
let betters = SkewedSplitView()
betters.backgroundColor = UIColor.greenColor()
self.addSubview(betters)
constrain(betters, friends) { (betters, friends) in
betters.bottom == friends.top - 3
betters.leading == betters^.leading
betters.trailing == betters^.trailing
betters.height == 40
}
На экране вид выложена просто отлично, имеет правильную структуру.
Ни один из них в UIView –