【发布时间】:2017-10-22 13:06:19
【问题描述】:
因为我可以在 Android 和 WPF 中轻松地做同样的事情,所以我认为 XCode 的 Interface Builder 也会很简单。但是我错了。我花了几个小时在故事板上多次重置约束。我知道这个问题看起来很愚蠢,但请给我一个提示。
我想要在故事板上出现这样的内容。我应该设置什么约束?
- 应保持 ImageView 的纵横比。
- ImageView 水平居中。
- ImageView 会随着屏幕宽度而增长,例如垂直手机屏幕宽度的 90%。或者,我希望我可以设置一个最大值,例如,不大于 400。我的意思是,iPad 上的 90% 太大了。
- ImageView 的上边距应该与屏幕大小相适应。我的意思是,硬编码的边距 20 会使它在 iPad 上过于接近顶部,而硬编码的边距 200 在 iPad 上看起来不错,但在 iPhone SE 上却不行。
【问题讨论】:
-
这是一个答案(由我提供) - stackoverflow.com/questions/42860324/… - 带有相关的回购 (github.com/justdfd/soSquare)。这是 Swift 3,但重要的部分...... IB 约束、优先级等无论如何都应该起作用。诀窍是具有优先级的多个约束,让布局引擎知道要打破什么。此外,“正方形”
UIView可以是 (a) 具有纵横比的UIImageView,(b) 可以是简单的矩形。 -
对于 iOS,坚持百分比世界并不好。自动布局不是这样的,它迟早会带来麻烦。
标签: ios xcode interface-builder