【问题标题】:Xcode - Constraints on iPad - Landscape vs PortraitXcode - iPad 上的约束 - 横向与纵向
【发布时间】:2016-09-06 03:12:30
【问题描述】:

我似乎无法弄清楚约束和自动布局。在 iPad 上横向和纵向时,如何使两个对象之间的间距不同。

我并排放置到 UIViews。在纵向时,我希望它们之间的间距为 40,但在横向时,它可以更大,因为宽度更大。

这是纵向模式下的样子。我很高兴。

这里是横向的。如您所见,它似乎也没有填满屏幕,最终出现了很多空白空间。

有什么建议吗?谢谢!

【问题讨论】:

    标签: ios xcode swift ipad autolayout


    【解决方案1】:

    您可以单击约束值旁边的小 + 图标,然后为另一个尺寸类别选择不同的值。

    或者您可以根据您的方向更改代码中的约束值。

    或者您可以添加具有较低优先级的额外约束,然后在您处于横向模式时增加优先级。

    【讨论】:

    • 我尝试使用尺寸等级,但不幸的是没有针对纵向和横向 iPad 屏幕尺寸的尺寸等级。如果我错了,请纠正我。我还尝试使用较低优先级的约束。本质上,我将视图固定到它们最近的边缘,并使它们的优先级低于它们之间的间距(大于或等于约束)。它适用于初始屏幕加载,但如果方向切换,它们的优先级会抛出所有问题。我认为最好的解决方案是以编程方式更改约束,但我现在找到了解决方案。谢谢。
    【解决方案2】:

    不要给间距约束一个像 40 这样的常数值,而是让它成为一个比例宽度约束,它是安装在它之间的一个视图的宽度的一小部分,或者是整个超级视图宽度的一小部分.这样,随着屏幕宽度变大(如横向),间距也会按比例变宽。

    【讨论】:

      【解决方案3】:

      除了@Daniel Hall 的回答,我还想指出,您还可以将两个UIView 的前缘和后缘固定在他们的父视图和彼此之间。

      例如:

      第一个UIView:前缘距父视图 10 点,后缘距第二个 UIView 40 点

      第二个UIView:前缘距第一个UIView 40 个点,后缘距父视图10 个点

      旋转设备后,它应该会根据这些自动布局约束自行调整大小。当然,使用这种方法,您的两个UIView 可能会超出准确的比例,因此请明智地使用它。

      【讨论】:

        【解决方案4】:

        我最终不得不将它固定在底部和它们各自的侧面。

        查看1:

        • 领先:30

        • 底部:25

        查看2:

        • 尾随:30
        • 底部:25

        我对它们之间的空间使用了 >= 约束 (>= 5)。如果我增加这些约束中的任何一个的常数,视图就会重叠。这不是最好的情况,因为在横向模式下我仍然有很多空白空间,但这是我能想到的最好的情况。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-03-22
          • 2015-12-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-16
          • 1970-01-01
          相关资源
          最近更新 更多