0
有沒有更好的方法來觀察NSScrollView - > NSClipView框架/邊界的變化? 這是的OBJ-C代碼翻譯成斯威夫特:Swift NSScrollView更好NSViewBoundsDidChangeNotification觀察?
public override init(frame frameRect: NSRect) {
self.contentView.postsFrameChangedNotifications = true;
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "frameDidChange:",
name: NSViewFrameDidChangeNotification,
object: self.contentView)
}
deinit {
NSNotificationCenter.defaultCenter().removeObserver(
self,
name: NSViewFrameDidChangeNotification,
object: self.contentView)
}
它的工作原理,但我不希望使用NSNotificationCenter。我想在NSClipView使用frame屬性觀察:
class MyClipView: NSClipView {
...
override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
self.postsFrameChangedNotifications = true;
}
override var frame: CGRect {
didSet {
println("Did set frame")
}
}
}
但didSet被稱爲初始化後只有2次並封閉NSScrollView滾動時,它永遠不會被調用。看起來蘋果正在使用內部方法來更改框架而不調用框架屬性?
同樣代表NSViewBoundsDidChangeNotification和bounds屬性。
算了筆以覆蓋幀,setFrameOrigin,setFrameSize。沒有一個被調用,多於一次。它們在初始化後被調用的順序是:setFrameOrigin,setFrameSize,frame。我想這對邊界是一樣的。滾動過程中不調用方法/屬性。 – 2015-02-11 22:06:51