Cocoa NSImageView和NSImageCell之间的关系是什么?

Cocoa NSImageView和NSImageCell之间的关系是什么?,cocoa,interface-builder,cocoa-bindings,nsimageview,Cocoa,Interface Builder,Cocoa Bindings,Nsimageview,似乎如果我在代码中创建一个NSImageView,如果NSImageView变得比图像本身大,则无法使图像自动按比例放大。(奇怪的遗漏) 另一方面,如果我在IB中创建NSImageView,它似乎会以某种方式将NSImageCell附加到NSImageView,并且NSImageCell具有按比例上下缩放的选项,这就是我想要的 但是在IB中,我似乎无法理解NSImageView和NSImageCell之间的关系。我无法从NSImageView中删除NSImageCell,并且在绑定或其他任何地方

似乎如果我在代码中创建一个
NSImageView
,如果
NSImageView
变得比图像本身大,则无法使图像自动按比例放大。(奇怪的遗漏)

另一方面,如果我在IB中创建
NSImageView
,它似乎会以某种方式将
NSImageCell
附加到
NSImageView
,并且
NSImageCell
具有按比例上下缩放的选项,这就是我想要的

但是在IB中,我似乎无法理解
NSImageView
NSImageCell
之间的关系。我无法从
NSImageView
中删除
NSImageCell
,并且在绑定或其他任何地方都看不到连接

在代码中创建
NSImageView
时,如何获得
NSImageCell
的功能

如果这是显而易见的,很抱歉,但我习惯了
uiimageview
,它们肯定不同于
NSImageView


谢谢。

您感到困惑的原因是
-[NSImageView setImageScaling:
上的文档错误,其中列出了可能的缩放选择。如果您查找
NSImageScaling
,您将找到另一个选择
nsimagescaleproportiallyupordown
您应该能够使用
[NSImageView setImageScaling:nsimagescaleproportiallyupordown]
进行放大。你在这方面有困难吗?您还可以使用
-cell
访问任何
NSControl
的单元格

至于将单元格与控件(视图)分离的问题,这是功能远不如以前的计算机(接下来的一些计算机只有8MB内存)时代的遗留问题。单元提供了一个重量较轻的对象,不需要部分俯视全景。这在可能存在大量元素的情况下非常重要,例如在矩阵或表中。单元格的设计更易于复制和重用,非常类似于
UITableViewCell
。与
UITableViewCell
类似,相同的
NSCell
可以重复使用以绘制不同的内容。细胞也共享一些单体。例如,大多数单元格通常只共享一个字段编辑器(
NSTextView
)。当用户选择不同的文本字段进行编辑时,它会根据需要移动


在这样一个世界里,第一部iPhone的内存是下一部iPhone的10倍,台式机的内存通常是1000倍,在
NSCell
中的一些选择就没有那么有意义了。自10.7以来,OSX已经将一些东西从
NSCell
中移开
NSTableView
现在支持
NSView
单元格以及
NSCell
单元格。iPhoneOS发布时,
UITableView
从一开始就在视图上启动。(当然,与OS X表视图相比,iPhone表视图是微不足道的,因此它比可用内存更容易选择。)

感谢您的解释。我在iOS操作系统方面的经验比Mac操作系统丰富得多,并且错误地认为它们更相似。我甚至没有意识到所有的NSCONTROL都有一个NSCell…包括NSImageView。再次感谢。iPhone从近25年来关于如何最好地实现ObjC框架的经验中受益匪浅。对于我们这些在iPhone之前就在Cocoa工作的人来说,最初的iPhoneOS是一个难以置信的时刻,充满了“这太熟悉了,但是UIKit要容易得多。”另一方面,UIWebView是OSX WebView的一个苍白、悲伤的小影子。与CocoaText/NSTextView相比,TextKit/UITextView是可怜的。还有iOS的Security.framework中提供的一小部分功能…好吧,所以OSX在很多地方仍然更好,但UIKit仍然比AppKit好。我想知道为什么你的名字看起来如此熟悉…然后我在桌上看到了《突破限制》的副本。:)