gpt4 book ai didi

objective-c - 改变 cocoa 窗口的大小?

转载 作者:行者123 更新时间:2023-12-03 16:54:53 26 4
gpt4 key购买 nike

我有一个窗口,当用户单击它时,我需要更改其大小。我正在使用[self setFrame:windowFrame display:YES animate:YES]来实现这一点。

即使窗口成功更改了大小(我增加了其高度),它也会将窗口的内容随之向上移动。我该如何防止这种情况发生?我希望内容保留在原处。

我正在 OSX Mountain Lion 上使用 Objective-C 和 Cocoa 开发 OSX 应用程序。

编辑:约束和/或 Spring 和支柱将不起作用,因为我需要在调整窗口大小后移动内容。

最佳答案

Constraints and/or Springs and Struts will not work as I need to move the contents around after the window is resized.

在这种情况下,您应该使用 NSViewAnimation .

单个 View 动画实际上可以对多个 View 执行多个动画,甚至可以对窗口执行一个动画,尽管类的名称以及窗口不是 Cocoa 中的 View 这一事实。

您使用 initWithViewAnimations:, which takes an array of dictionaries 创建 View 动画。每个字典都会标识目标 (NSViewAnimationTargetKey) 以及对其执行的操作:更改目标的框架 (NSViewAnimationStartFrameKeyNSViewAnimationEndFrameKey) 或淡出目标输入或输出(NSViewAnimationEffectKey)。对于您的情况,您将更改目标的框架。

当用户执行导致窗口大小调整的操作时,您需要计算窗口所需的整体大小(注意调整其框架的位置,使其不会超出屏幕),如下所示以及 View 的新框架(位置和大小)。所有将移动和/或改变大小的东西,为它创建一个字典并将其放入数组中。然后创建 View 动画。

NSViewAnimation 是一种 NSAnimation ,它提供了启动和停止动画、监视其进度、 Hook 以及将多个 NSAnimations 链接在一起的所有方法。如果不出意外,您需要 start the animation .

关于objective-c - 改变 cocoa 窗口的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310943/

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