似乎在此mouseUp
处理程序中设置needsDisplay
时,触发了一个永无止境的绘图级联,我不知道为什么......
所需的效果是,mouseUp
更改按钮的mode
属性后,当drawRect
发生时,按钮的图标只会从the red circle,the black square 没有上面的gif中显示的级联图。
我已将它缩小了一点,可以说原因是the rect.origin.x being passed to MainView
's drawRect
function逐渐变大,宽度变小,但我无法弄明白为什么那是。
答案 0 :(得分:1)
事实证明这种情况正在发生,因为我正在为子视图分配新帧以尝试正确计算调整大小...这触发了绘制循环,因为我正在计算并在drawRect
内分配它们。 / p>
原来有一个覆盖来专门处理视图调整大小事件。
更改相关代码,例如
override func drawRect(rect: NSRect) {
super.drawRect(rect)
NSColor(calibratedWhite: 0.1, alpha: 1).setFill()
NSRectFill(rect)
let mbFrame = NSMakeRect(
rect.size.width / 2 - (45 / 2),
8,
49,
49
)
mainBtn.frame = mbFrame
}
到
override func resizeSubviewsWithOldSize(oldSize: NSSize) {
let mbFrame = NSMakeRect(
self.frame.size.width / 2 - (45 / 2),
8,
49,
49
)
mainBtn.frame = mbFrame
}
override func drawRect(rect: NSRect) {
super.drawRect(rect)
NSColor(calibratedWhite: 0.1, alpha: 1).setFill()
NSRectFill(rect)
}
让一切都玩得很好。