Кнопка внизу экрана: iPhone X против обычного экрана - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь оптимизировать приложение для экрана iPhone X. В настоящее время на большинстве экранов отображаются черные или белые полосы. В качестве примера я буду использовать PaymentMethodsView.

PaymentMethodsView - это пользовательский UIView, содержащий 1 или 2 кнопки по горизонтали StackView, superView имеет серый фон. Это StackView в настоящее время ограничено 16px суперпредставлением (все 4 стороны). В настоящее время это выглядит так на iPhone X (а на обычных iPhone вид только в нижней части экрана:

enter image description here Здесь я хочу добиться того, чтобы серая область доходила до нижней части экрана, а желтая - там, где сейчас находится нижняя часть всего изображения. (Так на 16px ниже)

Я могу заставить это работать, включив Use Safe Area Layout Guide для этого ViewController, ограничив PaymentMethodsView в viewController до 0 to safe area по сторонам и 0 to superview снизу. Затем в самом PaymentMethodsView я изменяю все ограничения StackView на safe area вместо superview и меняю нижнее ограничение на 0 вместо 16. Это работает нормально, за исключением того, что на обычных iPhone нижние 16px (под StackView) исчезают, а желтая кнопка помещается внизу экрана.

Как мне исправить это?

  • На iPhone X: серая область внизу экрана, кнопка 0px на bottom safe area
  • На обычных iPhone: серая область внизу экрана, 16 пикселей между желтой кнопкой и нижней частью экрана.

Спасибо!

1 Ответ

3 голосов
/ 16 мая 2019

Вы можете сделать это, добавив ДВА нижних ограничения в ваше представление стека ...

Во-первых, ограничьте основание grayView Bottom at Zero до нижней части представления (его суперпредставление), не в безопасную зону.Затем

  • добавьте одно ограничение из Нижнего стека в нижнюю часть grayView (его суперпредставление) в >= 16
  • и второе ограничение из Нижнего стека в нижняя часть безопасной области в 0 с Priority: 999

Это говорит: держите нижнюю часть стека ViewView как минимум 16 пунктов от нижней части своего суперпредставления (серый вид)

и

999 говорит, что поставьте его на Zero-pts отнижняя часть безопасной зоны если возможно

enter image description here

Результат на iPhone 7:

enter image description here

и на iPhone XS

enter image description here

...