【问题标题】:Auto layout of multiple views多个视图的自动布局
【发布时间】:2015-11-02 06:23:58
【问题描述】:

我正在尝试使用自动布局将以下视图定位在 viewController 中,这些视图在不同设备上可能具有不同的大小:

所有的 UILabel 从顶部或底部以及它们之间都应该有固定的空间。 UIImageView 应该根据剩余的空间具有灵活的宽度和高度,以及 1:1 的纵横比。

UILabel 具有以下约束:

  • 顶部空间
  • 底部空间
  • 容器中的水平中心

UIImage 视图具有以下约束:

  • 容器中的水平中心
  • 1:1 比例
  • 标签的底部空间
  • 要标注的顶部空间
  • 宽度:100(优先级 250)
  • 高度:100(优先级 250)

在 Xcode 预览中,一切看起来都不错,但在运行应用程序时,UIImage 会覆盖整个屏幕,而不是正确调整其宽度和高度。

【问题讨论】:

  • 那些视图是否放置在控制器根视图中?
  • 选择您对界面生成器的视图之一。然后,单击右下角的三角形图标。在显示“所有视图”的底部,单击“更新帧”。结果如何?
  • 你也应该移除 UIImageView 的宽高限制
  • 没有错位的视图,所以当我点击“更新框架”时没有任何反应。
  • 我去掉了宽高限制,问题依旧存在。

标签: ios swift user-interface autolayout


【解决方案1】:

首先确保ImageView 上方的标签与Top space to Top Layout Guide 挂钩,ImageView 下方的最底部标签与Bottom space to bottom Layout Guide 挂钩。

检查ImageView下面的所有标签是否都钩到了它下面的标签上。 现在检查图像视图是否与顶部和底部标签挂钩。给width constraint,找个出口吧。

根据限制 ImageView 的高度根据屏幕高度而变化。 宽度可以在程序中使用宽度出口相应地改变,如下所示

self.img_width.constant = self.imgView.frame.size.height;

希望这能解决您的问题。

【讨论】:

    【解决方案2】:

    只需将等宽约束添加到相对于主视图的图像视图 && 将其乘数设为 0.5

    【讨论】:

      【解决方案3】:

      删除每个组件的边距。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多