屏幕底部的按钮:iPhone X与常规屏幕

时间:2019-05-15 13:03:47

标签: ios swift xcode ios-autolayout

我正在尝试为iPhone X屏幕优化应用程序。当前,它在大多数屏幕上显示黑色或白色条。例如,我将使用PaymentMethodsView

PaymentMethodsView是自定义的UIView,在水平StackView中包含1或2个按钮,superView具有灰色背景。当前StackView的超级视图(全部4面)的约束为16px。目前在iPhone X上看起来像这样(在普通iPhone上,视图仅在屏幕底部:

enter image description here 我要在这里实现的是,灰色区域延伸到屏幕底部,而黄色位于整个视图底部所在的位置。 (因此降低了16像素)

我可以通过为此Use Safe Area Layout Guide启用ViewController,将viewController中的PaymentMethodsView约束到侧面的0 to safe area0 to superview来使它工作在底部。然后在PaymentMethodsView本身中,将所有StackView的约束更改为safe area而不是superview,并将底部约束更改为0而不是16。 效果很好,除了在普通iPhone上,底部16px(在StackView下)消失了,并将黄色按钮放在屏幕底部。

我该如何解决?

  • 在iPhone X上:屏幕底部的灰色区域,按钮bottom safe area的0px
  • 在普通iPhone上:屏幕底部的灰色区域,黄色按钮和屏幕底部之间的像素为16px。

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以通过在堆栈视图中添加两个底部约束来实现此目的...

首先,将灰色视图底部的零约束到视图的底部(其超级视图),将 不是 约束到安全区域。然后

  • 从stackView底部的>= 16处的grayView底部(其超级视图)添加一个约束
  • ,还有第二个约束,它是从0Priority: 999
  • 从stackView底部到安全区域的 底部

这表示:将stackView的底部至少保持其父视图(灰色视图)的底部

999说,如果可能,将其放置在安全区域底部的零点处

enter image description here

在iPhone 7上的结果:

enter image description here

以及在iPhone XS上

enter image description here

答案 1 :(得分:0)

下面的代码对我有用,试试看,

  1. 点击你的视图控制器

  2. 从右侧面板中选择 Identify and Type

  3. Interface Builder Document下启用Use Safe Area Layout

现在无论您想将任何视图放置到底部,只需给出与视图不安全区域相对应的约束