如何使用自动布局按比例缩小 NSImageView?

Posted

技术标签:

【中文标题】如何使用自动布局按比例缩小 NSImageView?【英文标题】:How to scale down NSImageView proportionally using auto layout? 【发布时间】:2016-01-12 17:19:29 【问题描述】:

我有多个不同尺寸和比例的NSImageView 在水平空间有限的视图中垂直堆叠。

由于图像尺寸可能大于父视图的尺寸,我想使用NSImageScaleProportionallyDown 按比例缩小它们。

对我来说问题似乎是NSImageViews 的默认行为,它只缩小超出自动布局设置的约束的轴,然后将NSImage 居中在NSImageView 中,这会导致@987654326 @ 占据尽可能多的高度,就好像它根本没有按比例缩小一样,并且由于图像之间的空间不同而破坏了垂直流动。

我尝试设置[questionImage setContentHuggingPriority:NSLayoutPriorityRequired forOrientation:NSLayoutConstraintOrientationHorizontal];,但没有成功。

那么如何使 NSImageView 只占用按比例缩放的 NSImage 所需的空间?

【问题讨论】:

【参考方案1】:

那么如何让 NSImageView 只占用按比例缩放的 NSImage 所需的空间?

您需要知道图像的纵横比,并设置 NSImageView 的宽度约束multiplier 相对于其高度约束(反之亦然),以强制执行相同的纵横比。换句话说,如果图像视图的宽度是由外部约束决定的,那么它的高度需要由它的结果宽度来决定(通过它的multiplier),反之亦然。

【讨论】:

简单而伟大的解决方案,现在当你提到它时似乎如此明显。谢谢! :) 该死!为此,我把头撞在墙上好几个小时。愚蠢,显然很简单!谢谢马特!【参考方案2】:

我不知道您的问题的答案,但想建议一种替代方法,如果在您的用例中可能的话。在将它们放置在图像视图中之前,如何缩小真实图像。这样您还可以节省一些内存,因为图像视图的内容本身会更小。您可以找到我提供的用于在 ios 上缩放图像的示例。我做了一个快速检查,看来您可以为 OSX 编写类似的代码。示例见In iOS, how to convert a web image into a less-quality one?。

【讨论】:

以上是关于如何使用自动布局按比例缩小 NSImageView?的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionViewCell 和自动布局缩放

fastreport4 picture 动态 设定大小,我的产品图像打印需要从数据库中读取,再按一定比例进行缩小。

iOS:使用自动布局保持视图彼此按比例调整大小

visio 如何按指定比例调整形状大小,指定比例进行放大缩小

如果图像大于 Glide 中请求的大小,如何仅按比例缩小图像?

我希望两个按钮具有相同的宽度并使用自动布局从屏幕顶部按比例在所有屏幕尺寸中定位自己?