【问题标题】:How to get and/or overwrite the minimum size of windows in Mac OSX如何在 Mac OSX 中获取和/或覆盖最小窗口大小
【发布时间】:2011-04-24 11:35:04
【问题描述】:

我想使用GUI Scripting 调整我机器上的任何窗口的大小,这通过AppleScript 完成。 该脚本类似于以下内容:

tell application "System Events"
  set appProcess to the first process whose name is "Finder"
  set appWindow to the front window of appProcess
  set position of appWindow to {100, 100}
  set size of appWindow to {10, 10}
end tell

即使我将宽度和高度设置为 10 像素,Finder 也会调整到至少 344 像素的宽度和 236 像素的高度。我用其他应用程序对此进行了测试,并且都有一个最小宽度,这取决于应用程序。例如,TextMate 窗口的大小至少为 213px * 129px。

由于我有时需要将窗口的大小调整为较小的宽度和高度,有没有办法覆盖这个最小尺寸,即即使它们“太小”也会使用我的值?

如果没有,我需要知道最小尺寸,这样我才能知道窗口会比预期的大。我将如何做到这一点?


具体问题如下:我正在编写一个窗口平铺管理器,因此我需要负责窗口的大小。最小尺寸会产生问题:

  1. 我的磁贴可能对于某个应用程序的窗口来说太小,因此这些窗口可能会在其他磁贴中重叠。
  2. 窗口可能比预期的更宽/更高,因此跨越了我的屏幕边界。 (例如,窗口靠近屏幕的右下角 - 我相应地设置了宽度和高度以适合角落,但由于它有最小尺寸,因此不适合。)

感谢您提出的任何建议。 :)

最好的祝愿
弗洛里安

【问题讨论】:

  • 您可以编辑 nib 文件并为窗口设置不同的最小尺寸!
  • 说真的,应用程序会为其窗口设置最小尺寸,以防止自动调整大小问题,这会导致某些视图在窗口大小放大时消失并且不显示。根据我收集的信息,您似乎无法从 AppleScript 查询或设置最小大小。
  • 看来你是对的,因为平铺管理器 Divvy 也无法设置更小的尺寸。太糟糕了,我无法查询最小尺寸,所以我需要一个解决方法。我想到的唯一解决方法是设置我希望的大小,获取实际大小并在实际大小与我设置/要求的大小不同时移动窗口。
  • 您可以绕过 Carbon 应用程序的最小大小限制,例如 iTunes。但是一般来说,仅使用 AS 是无法绕过它的。说真的,像 Divvy 这样的应用程序并没有平铺窗口管理器。
  • @Bavarious 如果你把你的评论变成答案,我很乐意接受。 :) @Lri 这是我最好的描述。我知道,xMonad 是一个真正的窗口平铺管理器,但是所有其他选项呢? (Divvy, OptimalLayout, Arrange, ...)

标签: objective-c macos window applescript minimum-size


【解决方案1】:

正如评论者指出的那样:无法将窗口大小调整到低于开发期间设置的最小尺寸(例如在界面生成器中)。但是,存在最小尺寸是有原因的:为了防止自动调整大小问题,例如由于视图尺寸太小,按钮重叠或消失。

感谢 Bavarious 的回答。

PS:Lri 补充说,可以使用应用程序的 API 绕过最小尺寸,例如使用 Carbon API 调整 iTunes 的大小或使用自定义构建的 AppleScript-API。谢谢李瑞!

【讨论】:

    猜你喜欢
    • 2022-11-28
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多