Автопрокладка - несогласованная ширина на iPhone X / 11 Устройствах - PullRequest
0 голосов
/ 18 июня 2020

Допустим, у меня есть ограничения, которые говорят:

photo.leading == view.leading
photo.top == view.top
photo.bottom == view.bottom
photo.width == view.width / 2

Если ширина супервизора составляет 375, вы ожидаете, что ширина фотографии будет 187,5. Однако на iPhone X / 11 устройствах я вместо этого отображается 187,67.

Это одно несоответствие приводит к неправильному поведению прокрутки справа.

enter image description here

Но опять же, работает отлично на iPhone 6/7/8 - которые, кстати, имеют такую ​​же доступную ширину ( 375 ).

enter image description here Что может быть неправильно?

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Немного сложно сказать, что происходит ... и не совсем понятно, что вы имеете в виду под * «нарушением режима прокрутки справа» ... но ...

Вы не должны Не нужно вычислять ширину.

  • Ограничьте CensioImageView
    • верхний, нижний и нижний границы его супервизором (BookQuestionAndAnswerPageView)
    • Ширина равна его супервизору (BookQuestionAndAnswerPageView) с 0.5 Множитель
  • Ограничить просмотр прокрутки:
    • Завершение до его superview (BookQuestionAndAnswerPageView)
    • Ведущий к CensioImageView завершающий
    • , однако у вас в настоящее время установлены верхнее и нижнее значения
  • Ограничить UIView в режиме прокрутки:
    • сверху, снизу, вперед и назад для прокрутки вида ContentLayoutGuide
    • Ширина равна ширине прокрутки FrameLayoutGuide

Это должно сделать то, что вам нужно (я думаю).

Как только вы начнете пытаться вычислить размеры, у вас могут возникнуть проблемы, если вы не обрабатываете 2x и 3x дисплей весы.

0 голосов
/ 18 июня 2020

Вы могли столкнуться с этой проблемой из-за округления десятичных знаков. Пиксели всегда кратны 1x, и не может быть 0,5 пикселя. Поэтому при попытке разделить ширину на 2 возвращается десятичное значение. Вы можете преодолеть это, изменив leadingAnchor на -1 или +1 в соответствии с вашей конфигурацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...