【问题标题】:AutoLayout : Relative scaling of viewsAutoLayout:视图的相对缩放
【发布时间】:2016-09-27 05:33:38
【问题描述】:

我想在不同屏幕上实现一致的视图。我的布局约束完美地适用于小屏幕,但它在大屏幕上打乱。

我已经制作了一个视图(红色边框表示该视图)并将其固定到主超级视图中。然后我制作了子视图并将其放在该视图中。我已经固定了布局的顶部底部尾随和前导边缘,其中包含其父视图的按钮(红色边框表示该视图)。包含按钮的视图在小屏幕(iPhone 5)中看起来像这样

当它在像这样的大屏幕上看时(iPhone 6 及更高版本)

我希望此布局在所有屏幕中具有与其他视图一样的相对高度。我怎样才能做到这一点?

【问题讨论】:

  • 这些视图是 tableview/collectionview 的一部分,还是 4 个大小相同的视图彼此相邻?
  • 它们都是垂直排列的独立视图
  • 你试过 UIStackViews 了吗?
  • 先生,我已经尝试过堆栈视图,但实际上我是 iOS 新手,对此几乎没有把握;这就是为什么我没有得到我想要的结果
  • @OsamaBinBashir 尝试查看这个答案,有一个很好的例子是如何实现依赖于其他视图的高度。 stackoverflow.com/a/39306279/661022

标签: ios swift autolayout


【解决方案1】:

我猜你可以使用内部包含按钮的 UIView 并为 UIView 设置底部、前导、尾随、顶部约束。然后您可以设置该 UIView 的高度约束并将乘数值设置为与其 superView(=Red box)的相对高度。最后,您可以根据需要为 UIView 内的按钮设置约束。如果您知道如何使用 StackView,我建议您使用它,因为它是简单易用的解决方案。这里是非常好的tutorial 关于 StackView。

【讨论】:

  • 堆栈视图为我解决了问题,谢谢队友:D 该教程也非常有帮助:D
【解决方案2】:

如果子视图的高度是恒定的,除了按钮视图,布局将像您在第一张图片中提到的那样。如果您将该按钮视图的高度保持为恒定,问题将得到解决

【讨论】:

  • 你能提供一个示例代码吗?这将有助于更好地理解。
  • 对于线性布局,即如果视图是垂直排列的,并且对于每个视图,如果您想要固定高度,则必须将高度设置为主视图下每个子视图的常数。通过查看您的图像,我猜是这样你没有为按钮子视图设置一个恒定的高度
猜你喜欢
  • 2017-07-24
  • 1970-01-01
  • 2016-05-08
  • 2015-07-23
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 2021-07-09
相关资源
最近更新 更多