gpt4 book ai didi

objective-c - 带有 NSWindowTitleVisibilityNone 的 NSWindow 将不正确的框架保存为用户默认值?

转载 作者:太空狗 更新时间:2023-10-30 03:44:29 24 4
gpt4 key购买 nike

我的应用程序有一个选项,允许用户在 NSWindow 10.10 API 中可用的标准“全尺寸”窗口标题栏/工具栏和“紧凑型”标题栏/工具栏之间进行选择。具体来说,我使用 -titleVisibility 方法根据用户的偏好设置 NSWindowTitleVisibleNSWindowTitleHidden。如果用户选中“Compact Titlebar”复选框,NSWindowTitleHidden 将应用于窗口,否则,窗口将使用默认样式。当复选框值更改时,该值存储在应用程序的用户默认值中,并更新/重绘窗口。

在重新启动应用程序之前一切正常。每次应用程序启动时,窗口都会根据从默认窗口样式 (NSWindowTitleVisible) 切换到新样式 (NSWindowTitleHidden) 所节省的空间大小而增长。因此,重新启动应用程序 5 到 6 次将使窗口与菜单栏和停靠栏齐平,具体取决于最初选中复选框时窗口的大小。

换句话说,设置属性时,窗口的框架似乎没有在 NSUserDefaults 中更新。是否有解决方法,或者我只是忽略了什么?任何建议都会很有帮助。

谢谢!

最佳答案

https://openradar.appspot.com/18510665 上发布了一个更好的(且已确认有效的)解决方案通过 pointum:

The problem is that window size is restored by the system using -[NSWindow setFrameUsingName:] before titleVisibility is set. Solution:

  1. Remove "Autosave Name" value in Interface Builder.
  2. Set it in code right after setting titleVisibility using -[NSWindow setFrameAutosaveName:].

关于objective-c - 带有 NSWindowTitleVisibilityNone 的 NSWindow 将不正确的框架保存为用户默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26880423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com