2014-12-06 4 views
4

Я столкнулся с проблемой, связанной с проблемой AutoLayout, когда я использую UIScrollView (проблема не возникает без него).UIScrollView Причинение «Неверных представлений» Проблемы автозапуска

У меня есть UIScrollView, который ограничен границами UIView (содержится в UIViewController), и в этом я пытаюсь разместить UILabel и UITextField бок о бок. Я сдержал UILabel к левой и верхней границ, с его ширина и высота ограничена (см рисунок ниже):

Properly functioning constraints for the UILabel

Прямо рядом с этим UILabel является UITextField, которая ограничена слева, в верхней , и справа, а также с ограничением высоты. Тем не менее, это приводит к «неуместные Views» предупреждение, что государства «ожидаемая ширина = 163, фактическая ширина = 413», как показано на рисунке ниже:

UITextField constraints causing Misplaced Views issue

Когда я выбираю «Сброс с рекомендуемыми Ограничений », проблема« Misplaced Views »исчезает, но в этом месте я остался с ограничением ширины в 413 точек, чего я надеюсь избежать, так как мне не понравится, чтобы этот UIViewController был горизонтально прокручиваем на более мелкие устройства.

ответ

9

Вид прокрутки имеет размер (размер, который он занимает на экране) и размер содержимого (размер всей области прокрутки). В Auto Layout размер содержимого автоматически вычисляется из ограничений элементов в представлении прокрутки. Это проблема, потому что вы пытаетесь сделать вид прокрутки той же ширины, что и ваш экран, а затем привязаны к этому элементу. Когда вы это сделаете, Auto Layout настаивает на том, что вы даете текстовому полю явную ширину, чтобы он мог рассчитать ширину прокручиваемой области.

Чтобы сделать то, что вы хотите, сделайте следующее:

  1. Добавить «просмотр содержимого» на ваш взгляд прокрутки. Это представление будет единственным элементом верхнего уровня в вашем представлении прокрутки. Он будет содержать весь ваш контент в качестве подзаголовков. Перетащите UIView и добавьте его в свой список прокрутки. Ограничьте его верхнюю, ведущую, нижнюю и заднюю кромки в виде прокрутки. Ограничьте его ширину до ширины прокрутки. Дайте ему ограничение по высоте и установите его, насколько бы вы хотели, чтобы ваша область содержимого была.

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

Смежные вопросы