【问题标题】:NSImageView size does not follow its window'sNSImageView 大小不跟随它的窗口
【发布时间】:2012-10-04 17:46:17
【问题描述】:

我只是在玩 OSX 应用程序开发。我完全是菜鸟。我认为它就像 iOS 应用程序开发一样直截了当。但是经过几天的努力,似乎并不那么容易。

这就是我想要做的。我有一个 NSWindow。在其中我放了一个 Image Well(带有命名?lol)嗯“Image Well”,它是一个 NSImageView(没有双关语)。

所以我只希望 NSImageView 的框架根据 NSWindow 的大小调整大小。就这么简单。

这是我所做的但不起作用:

NSImageView 作为 imageView。

编写 NSWindow windowDidResize 和 windowDidResize: 的委托方法 NSWindowDelegate 方法,并在其中调整图像视图的 imageView 框架的 framesize。代码:(NSImageView 位于一个名为 imageView 的属性中。)

- (void)windowDidResize:(NSNotification *)notification {

   // NSLog(@"resized");

    NSRect zWindowRect = [[self window]frame];
    NSRect zContentRect = [[self window]contentRectForFrameRect:zWindowRect];

    [self.imageView setFrameSize:NSMakeSize(zContentRect.size.width,
                                            zContentRect.size.height)];

    [self.imageView setNeedsDisplay:YES];


}

这个方法被调用(用NSLog() 测试过),但是NSImageView 只是保持原来的大小。我检查了IBOutlet 连接是否正常。

什么给了?为什么NSImageView 不会调整大小?

【问题讨论】:

  • 好的,我尝试了 setBounds 而不是 setFrame 或 setFrameSize,现在 NSImageView 改变了大小,但是以最奇怪的方式。当我放大 NSWindow 时,NSImageView 变得更小,当我减小 NSWindow 大小时,NSIMageView 变得更大......呈指数级增长。那么,有人知道这里发生了什么吗?

标签: objective-c cocoa nswindow autolayout nsimageview


【解决方案1】:

好的。这正在成为一种习惯。再次回答我自己的问题。

这种行为似乎是由于 Interface Builder 的“自动布局”功能造成的。

要修复它,只需在 MainMenu.xib 中禁用“自动布局”。 SEE HERE FOR EXPLANATIONS

如果站点过期:只需单击 MainMenu.xib,然后转到 XCode 实用程序面板中的第一个选项卡文件。旁边应该有一个“使用自动布局”复选框。取消选中它。

【讨论】:

  • 您的解释链接已损坏。
  • 因此“万一网站过期:”:D
猜你喜欢
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多