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

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

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

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

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

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

【问题讨论】:

    标签: objective-c cocoa autolayout nsimageview


    【解决方案1】:

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

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

    【讨论】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-06-16
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2014-10-29
      • 1970-01-01
      • 2016-01-11
      相关资源
      最近更新 更多