我正在尝试将UIImageView放入我的ViewController的UIView中,当UIView为480px或568px高度时,会自动调整大小UIImageView。但在IB中看起来非常复杂!
如果我在View控制器中放置一个普通视图,它会自然调整大小。但是我的UIImageView没有。即使我选择scaleToFill模式。什么都不会发生。
所以我似乎需要使用约束。但问题是当我添加一个简单的约束只是为了告诉UIImageView是X高度大小。 IB告诉我有错误,并要求我向视图的其他组件添加许多约束。那是在传播,我正在完成数以千计的限制。这很令人困惑,因为我只想让我的UIView调整大小到父容器,并且IB告诉我我需要向其他从不提出任何要求的组件添加约束。
在代码中它只需要两行!我不明白为什么它在IB中如此复杂。 那么有人可以解释一下如何让我的UIImageView根据他的父母调整大小吗?
我在Google上做了很多研究,但没有发现任何对我有帮助的事情。这就像没有人永远不必使用完整的imageView模式。
请注意,我已经成功使用另一个viewController中的完整UIImageView约束,但这有点模糊。但是现在我不知道为什么当我做同样的事情时,IB想要添加很多很多约束。
答案 0 :(得分:1)
我认为如果你使用距离超视距(即视图控制器)的约束而不是高度/宽度约束会更好。选择图像视图并添加如下约束:
图像视图将自动填充3,5“和4”iPhone上的屏幕。之后只需使用图像视图的contentMode
来获得所需的效果。
答案 1 :(得分:1)
使用自动布局或旧的自动调整遮罩是解决问题的方法
Marko指出了解决方案,但根据您的要求遗漏了一些东西。使用contentMode
可以调整图像以适应,或者在保持纵横比的情况下填充UIImageView
的边界。
我过去遇到的一个问题是加载2个不同的图像,一个用于3.5英寸,另一个用于4英寸的屏幕。 Apple表示您可以使用此命名约定在运行时加载正确的图像。
适用于视网膜和不同设备(iphone或ipad),但iphone5约定仅适用于启动图像。
现在只剩下一个机会,检查屏幕大小并在运行时加载正确的机会,在我看来这不是一个很棒的解决方案。
在Xcode 5中,感谢图像资产功能可以加载特定屏幕尺寸的正确图像。只需添加一个新的图像集,在属性检查器中将其转换为特定的设备,然后将图像拖到其插槽上即可