gpt4 book ai didi

objective-c - Cocoa - 使用 setFrame 对 NSWindow 进行动画处理

转载 作者:行者123 更新时间:2023-12-03 16:32:58 25 4
gpt4 key购买 nike

我有以下代码块。

NSRect windowFrame = [window frame];
windowFrame.size.height = [view frame].size.height + WINDOW_TOOLBAR_HEIGHT;
windowFrame.size.width = [view frame].size.width;
windowFrame.origin.y = NSMaxY([window frame]) - ([view frame].size.height + WINDOW_TOOLBAR_HEIGHT);

if ([[contentView subviews] count] != 0)
{
[[[contentView subviews] objectAtIndex:0] removeFromSuperview];
}

[window setFrame:windowFrame display:YES animate:YES];
[contentView setFrame:[view frame]];
[contentView addSubview:view];

它将框架切换到新 View ,但我从未得到缩小/增长的动画。如果我把它放在[窗口]之前

NSLog([NSString stringWithFormat: @"%.2f", windowFrame.size.height]);

我得到不同的尺寸..这是输出

2011-09-07 14:13:02.418 Spark[29919:903] 492.00
2011-09-07 14:13:03.610 Spark[29919:903] 580.00
2011-09-07 14:13:05.955 Spark[29919:903] 492.00
2011-09-07 14:13:08.339 Spark[29919:903] 255.00

不知道我错过了什么。

谢谢!

编辑

我添加了一个简单的项目来查看我的问题

http://dl.dropbox.com/u/13731121/Spark.zip

最佳答案

我已经审查了您的项目,以下是我的观点:

  1. 您的首选项.xib...至少可以说是非标准。通常在创建窗口 Controller 时,应该将窗口 Controller 类设置为窗口nib的文件所有者。您的preference.xib 文件所有者是NSObject,而PreferenceController 是单独的对象。所以我已经修复了这个问题并反弹了几乎所有 IBOutlet。

  2. 我已经反弹了几乎所有的outlet,因为你不需要contentView这样的东西,因为window本身就有contentView这样的属性,所以这就足够了设置窗口的 contentView 属性。

  3. 您设置了 contentView 的 FRAME,这是非常非常错误的(除非您真的知道自己在做什么)。我已将其更改为设置 contentView 的 BOUNDS。

关于objective-c - Cocoa - 使用 setFrame 对 NSWindow 进行动画处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341024/

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