自动布局:窗口调整大小时如何更改框架的原点?

Posted

技术标签:

【中文标题】自动布局:窗口调整大小时如何更改框架的原点?【英文标题】:Autolayout: How to change frame's origin when window resizes? 【发布时间】:2013-10-29 20:24:09 【问题描述】:

我有一个使用 AutolayoutNSWindow。它只包含一个放置标签 (NSTextField) 的视图。此标签中的文本是动态的,并且在我的应用程序运行时会发生变化。当插入较长的文本时,由于我的垂直和水平限制,我的窗口会完全调整大小。

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

最好的方法是什么?

【问题讨论】:

【参考方案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://***.com/a/19677527/1987246

【讨论】:

以上是关于自动布局:窗口调整大小时如何更改框架的原点?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动调整大小和自动布局并更改其默认行为? [关闭]

使用 AutoLayout 调整框架大小

使用自动布局时,如何调整 CALayer 的锚点?

Interface Builder 自动布局和调整大小

如何在桌面布局从4 * 5变为5 * 5时自动更改窗口小部件的宽度?

从 Xib 加载视图在自动布局后调整框架子视图的大小