我有多个不同尺寸和比例的NSImageView
垂直堆叠在水平空间有限的视图中。
由于图片尺寸可能比父视图的尺寸大,我想通过使用NSImageScaleProportionallyDown
按比例缩小它们。
我的问题似乎是NSImageViews
的默认行为,它只会缩小超出自动布局设置的约束的轴,然后将NSImage
置于NSImageView
的中心位置这会导致NSImageView
占据尽可能多的高度,就像它没有按比例缩小一样,并打破垂直流,因为图像之间的空间不同。
我试图设置[questionImage setContentHuggingPriority:NSLayoutPriorityRequired forOrientation:NSLayoutConstraintOrientationHorizontal];
但没有任何成功。
那么如何使NSImageView占用的空间与按比例缩放的NSImage所需的空间相同?
答案 0 :(得分:1)
那么如何使NSImageView占用的空间与按比例缩放的NSImage所需的空间相同?
您需要知道图像的纵横比,并根据其高度约束(反之亦然)设置NSImageView的宽度约束multiplier
,以强制执行相同的纵横比。换句话说,如果图像视图的宽度由外部约束确定,则其高度需要通过其生成的宽度确定(通过其multiplier
),反之亦然。
答案 1 :(得分:0)
我不知道你问题的答案,但是如果你的用例中有可能的话,我想建议一种替代方法。如何在将实际图像放入图像视图之前缩小它们。这样,您还可以节省一些内存,因为图像视图的内容本身会更小。您可以找到我在iOS上缩放图像时提供的示例。我做了一个快速检查,看起来你可以为OSX编写类似的代码。有关示例,请参阅In iOS, how to convert a web image into a less-quality one?。