我有一个使用Autolayout的NSWindow。它只包含一个放置标签(NSTextField)的视图。此标签中的文本是动态的,并且在我的应用程序运行时会发生变化。当插入更长的文本时,由于我的垂直和水平约束,我的窗口会完美调整大小。
我的问题是,我的窗口应该位于屏幕的右上角(就在菜单栏下方)。当我的窗口在满足我的约束时调整大小时,我需要在屏幕上重新定位我的窗口。
最好的方法是什么?
我有一个使用Autolayout的NSWindow。它只包含一个放置标签(NSTextField)的视图。此标签中的文本是动态的,并且在我的应用程序运行时会发生变化。当插入更长的文本时,由于我的垂直和水平约束,我的窗口会完美调整大小。
我的问题是,我的窗口应该位于屏幕的右上角(就在菜单栏下方)。当我的窗口在满足我的约束时调整大小时,我需要在屏幕上重新定位我的窗口。
最好的方法是什么?
在你的 applicationDidFinishLaunching: 方法中注册 windowDidResizeNotification 来处理 resize 事件:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:NSWindowDidResizeNotification object:nil]; //register resize notification
}
然后在通知处理程序方法中,使用您之前使用的代码将窗口设置为右上角。
- (void)handleNotification: (id) sender
{
//code to set window to top right corner
}
我最近的一个回答可以帮助你:https ://stackoverflow.com/a/19677527/1987246