我对 nib 文件有一种可怕的反感,并且更喜欢尽可能以编程方式做事,所以我对此没有多大帮助……但这里有一个小清单,来自我最近编写的一个小 NSScrollview 测试应用程序,它做类似的事情。这个代码块中唯一提到的非独立的东西是window
名称,它指的是NSWindow *
一个已经创建的窗口。这里self
只是指一个控制器对象。
NSImage * myImage = [NSImage imageNamed:@"myfilename.png"];
NSRect imageRect = NSMakeRect(0.0,0.0,myImage.size.width,myImage.size.height);
self.myImageView = [[NSImageView alloc] initWithFrame:imageRect];
self.myImageView.bounds = imageRect;
self.myImageView.image = myImage;
self.myScrollView = [[NSScrollView alloc] initWithFrame:[window.contentView frame]];
self.myScrollView.hasVerticalScroller = YES;
self.myScrollView.hasHorizontalScroller = YES;
self.myScrollView.documentView = self.myImageView;
self.myScrollView.borderType = NSNoBorder;
self.myScrollView.scrollerStyle = NSScrollerStyleOverlay;
window.contentView = self.myScrollView;
我知道这可能不是您正在寻找的解决方案,但也许它可以帮助您调试?NSImageView
特别是,除了给它一个框架、一个边界矩形和一个 之外,我没有做任何有趣的事情NSImage *
,所以我认为你不需要担心缩放参数本身——事实上,如果你想要图像要全尺寸并滚动它,你希望你NSImageView
的框架与图像大小相同,这样它根本不需要缩放。也许这就是你的问题——框架太小了?NSImageView 框架比窗口大是可以的——这就是让你在它周围滚动的原因。