Jos*_*ard 2 macos frame nsview ios swift
我有一个NSView,如果框架改变我需要注意.
class CustomView: NSView {
override var frame: NSRect {
didSet {
Swift.print("changed frame: \(self.frame)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果调整superView框架的大小,我只会得到这个"notifikation".
如果我在NSView类中执行类似的操作:
NotificationCenter.default.addObserver(forName: Notification.Name(rawValue: "changeOwnSize"), object: nil, queue: nil) { notification in
let newSize = NSSize(width: self.frame.width / 2, height: self.frame.height)
self.setFrameSize(newSize)
}
Run Code Online (Sandbox Code Playgroud)
该didSet功能根本没有反应.虽然框架大小已更改.谢谢你的建议.
两个步骤:
在某些时候,将视图的postsFrameChangedNotifications属性设置为true.
此时,您应该能够观察视图的frameDidChangeNotification使用NSNotificationCenter(如果使用Swift 3,它NSNotification.Name.NSViewFrameDidChange或类似的东西).
| 归档时间: |
|
| 查看次数: |
1418 次 |
| 最近记录: |