Autolayout:如何在窗口调整大小时更改框架的原点?

时间:2013-10-29 20:24:09

标签: objective-c cocoa autolayout nswindow nslayoutconstraint

我使用 Autolayout NSWindow 。它只包含一个视图,其中放置了一个标签( NSTextField )。此标签中的文本是动态的,并在我的应用程序运行时更改。当插入较长的文本时,由于我的垂直和水平约束,我的窗口完全调整大小。

我的问题是,我的窗口应该位于屏幕的右上角(位于菜单栏下方)。当我的窗口在满足我的约束时调整大小时,我需要将窗口重新定位在屏幕上。

最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

在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