【发布时间】: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