NSImageView大小不遵循其窗口

时间:2012-10-14 16:06:15

标签: objective-c cocoa nswindow autolayout nsimageview

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

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

所以我只想让NSImageView的框架按照NSWindow的大小调整大小。就这么简单。

以下是我所做的不起作用:

NSImageView as imageView。

编写NSWindow windowDidResize和windowDidResize的委托方法NSWindowDelegate方法:只调整其中图像视图的imageView框架的框架大小。代码:( 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不会调整大小?

1 个答案:

答案 0 :(得分:3)

确定。这已成为一种习惯。再次回答我自己的问题。

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

要解决此问题,只需在MainMenu.xib中禁用“自动布局”即可。 SEE HERE FOR EXPLANATIONS

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