1
我使用下面的代碼來捕獲collectionViewCell的幀更改。在UICollectionViewCell中添加/刪除觀察者
class MovieCardCollectionViewCell: UICollectionViewCell {
override init(frame: CGRect) {
super.init(frame: frame)
awakeFromNib()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
awakeFromNib()
}
override func awakeFromNib() {
// configuring cell and views
contentView.addObserver(self, forKeyPath: "frame", options: .New, context: UnsafeMutablePointer<Void>())
}
deinit {
contentView.removeObserver(self, forKeyPath: "frame")
}
override func updateViews() {
// changing some views
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if let key = keyPath {
switch (key) {
case "frame":
updateViews()
default: break
}
}
}
}
但我仍然得到錯誤的UIView解除分配之前觀察員被釋放。
我對其他視圖和其他對象使用相同的機制,它工作得很好。
任何想法?