6

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

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

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

NSImageCell创建NSImageViewin 代码时如何获得的功能?

对不起,如果这很明显,但我已经习惯了UIImageViews,它们肯定不同于NSImageView.

谢谢你。

4

2 回答 2

9

您应该能够使用[NSImageView setImageScaling:NSImageScaleProportionallyUpOrDown]. 你遇到过麻烦吗?您还可以访问任何NSControl使用的单元格-cell

至于单元格与控件(视图)的分离,这是从功能更弱的计算机时代(一些 NeXT 计算机只有 8MB 内存)的延续。单元格提供了一个轻量级的对象,它不需要完整视图的一些开销。这在可能存在大量元素的情况下很重要,例如在矩阵或表格中。单元被设计成更容易复制和重用,就像UITableViewCell. 一样UITableViewCellNSCell可以重复使用相同的来绘制不同的内容。细胞也共享一些单例。例如,NSTextView大多数单元格通常只共享一个字段编辑器 ( )。当用户选择不同的文本字段进行编辑时,它会根据需要移动。

在第一代 iPhone 的内存是 NeXT 的 10 倍,而台式机的内存通常是 1000 倍的世界里,其中的一些选择NSCell没有多大意义。从 10.7 开始,OS X 已经从NSCell. NSTableView现在支持NSView细胞和NSCell细胞。iPhoneOS 发布时,UITableView从一开始就开始关注视图。(当然,与 OS X 表格视图相比,iPhone 表格视图是微不足道的,因此它是一个更容易的选择,原因不仅仅是可用内存。)

于 2013-11-06T19:00:10.797 回答
1

您感到困惑的原因是文档-[NSImageView setImageScaling:]错误,其中列出了可能的缩放选项。如果你向上看NSImageScaling,你会发现另一种选择NSImageScaleProportionallyUpOrDown

于 2013-11-06T18:56:07.533 回答