我尝试使用以下代码重新定位NSWindowCloseButton
s(NSButton *closeButton = [window standardWindowButton:NSWindowCloseButton];
[closeButton setFrame:newFrame];
[closeButton removeFromSuperview];
[window.contentView addSubview:closeButton];
等,又称" 交通灯"): / p>
[closeButton updateTrackingAreas]
重新定位没有问题。但是,只要窗口完成加载(成为键),跟踪区域仍然处于其旧位置(这些按钮所在的位置)。调整窗口大小后,跟踪区域似乎更新为正确的(当前)位置。
我已尝试NSView
之类的内容,但根据this answer,它无论如何都不会起作用。
在没有子类NSWindow
/ NSWindowDelegate
的情况下,是否有更直接/更正确的方法来解决此问题?
更新
这是我目前用来修复"问题:(通过- (void)windowDidBecomeMain:(NSNotification *)notification
{
NSRect frame = [self.window frame];
frame.size = NSMakeSize(frame.size.width, frame.size.height+1.f);
[self.window setFrame:frame display:NO animate:NO];
frame.size = NSMakeSize(frame.size.width, frame.size.height-1.f);
[self.window setFrame:frame display:NO animate:YES];
}
)
class User {
var id: Int!
init?(data: JSON) {
guard let id = Int(data["id"]) else {
return nil
}
self.id = id
}
}
然后调整窗口大小而不刷新实际帧,强制更新跟踪区域。