如何使用约束在interfaceBuilder中调整UIImageView(适用于3.5"和4")的大小

时间:2014-02-19 12:49:50

标签: ios xcode interface-builder

我正在尝试将UIImageView放入我的ViewController的UIView中,当UIView为480px或568px高度时,会自动调整大小UIImageView。但在IB中看起来非常复杂!

如果我在View控制器中放置一个普通视图,它会自然调整大小。但是我的UIImageView没有。即使我选择scaleToFill模式。什么都不会发生。

所以我似乎需要使用约束。但问题是当我添加一个简单的约束只是为了告诉UIImageView是X高度大小。 IB告诉我有错误,并要求我向视图的其他组件添加许多约束。那是在传播,我正在完成数以千计的限制。这很令人困惑,因为我只想让我的UIView调整大小到父容器,并且IB告诉我我需要向其他从不提出任何要求的组件添加约束。

在代码中它只需要两行!我不明白为什么它在IB中如此复杂。 那么有人可以解释一下如何让我的UIImageView根据他的父母调整大小吗?

我在Google上做了很多研究,但没有发现任何对我有帮助的事情。这就像没有人永远不必使用完整的imageView模式。

请注意,我已经成功使用另一个viewController中的完整UIImageView约束,但这有点模糊。但是现在我不知道为什么当我做同样的事情时,IB想要添加很多很多约束。

2 个答案:

答案 0 :(得分:1)

我认为如果你使用距离超视距(即视图控制器)的约束而不是高度/宽度约束会更好。选择图像视图并添加如下约束:

enter image description here

图像视图将自动填充3,5“和4”iPhone上的屏幕。之后只需使用图像视图的contentMode来获得所需的效果。

答案 1 :(得分:1)

使用自动布局或旧的自动调整遮罩是解决问题的方法 Marko指出了解决方案,但根据您的要求遗漏了一些东西。使用contentMode可以调整图像以适应,或者在保持纵横比的情况下填充UIImageView的边界。
我过去遇到的一个问题是加载2个不同的图像,一个用于3.5英寸,另一个用于4英寸的屏幕。 Apple表示您可以使用此命名约定在运行时加载正确的图像。

  • 名〜iphone.png
  • name@2x~iphone.png
  • 名〜ipad.png
  • name@2x~ipad.png
  • name-568h@2x~iphone.png(iPhone 5)

适用于视网膜和不同设备(iphone或ipad),但iphone5约定仅适用于启动图像。
现在只剩下一个机会,检查屏幕大小并在运行时加载正确的机会,在我看来这不是一个很棒的解决方案。
在Xcode 5中,感谢图像资产功能可以加载特定屏幕尺寸的正确图像。只需添加一个新的图像集,在属性检查器中将其转换为特定的设备,然后将图像拖到其插槽上即可 enter image description here