2014-10-08 2 views
3

Я пытаюсь понять, как автоотключение работает под XCode6, но есть много таинственных вещей, которые убегают от моего ума. Autolayout и ограничения philosofy могут быть очень трудными для изучения, но я понял, что жизнь может быть проще с использованием этих инструментов ...Полностью отзывчивый UIView внутри UIScrollView с использованием автозапуска

Для вашей информации мне нужно создать чат с таблицей (сообщениями) и представлением содержащее текстовое поле (панель сообщений), вложенное в UIView, которое снова вложено в UIScrollView, поэтому я могу сдвинуть представление прокрутки, когда клавиатура появляется под текстовым полем.

Я прочитал много уроков и просмотрел много видео до тех пор, пока не нашел полезный учебник Using UIScrollView with Auto Layout in iOS. В Github есть проект Xcode, о чем объясняет учебник.

В своем учебнике, Майк Woelmer говорит, что

Одна из самых больших болевых точек со старым способом создания UIScrollView связывал размер контента в целях прокрутки. Он был достаточно прост, чтобы рассчитать размер вашего содержимого, если содержимое в UIScrollView было изображением. Но это было не так просто, если в ваш вид прокрутки включал смешанную сумку с кнопками, наклейками, пользовательскими видами и текстовыми полями. Длинные корректировки кода были необходимы для отражают постоянные изменения в поворотах устройства и размере телефона отличия.

Так Майк объясняет, как адаптировать UIView, используя заполнитель и заставляя вид внутри Scrollview приступы экрана устройства, создавая в viewDidLoad некоторых NSLayoutConstraint:

Решения смотреть снаружи прокрутки и привязать ограничение к главному виду контроллера. Это невозможно сделать в построителе интерфейса , поэтому нам придется написать код. Интерфейс строитель все еще жалуется, поэтому нам нужно добавить ограничение на использование тонера , чтобы сделать его счастливым.

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

enter image description here

И последнее, но не в последнюю очередь, я итальянский, поэтому простите за мой английский. Если что-то недостаточно ясно, оставьте мне комментарий.

ответ

4

В принципе, вам необходимо установить ограничения на выравнивание и размер, чтобы Autolayout позаботился об остальном за вас. Если вы не предоставите достаточную информацию, вы получите предупреждение. Если вы предоставляете противоречивую информацию, вы получаете ошибки.

Вам необходимо в основном предоставить достаточную информацию для Autolayout для вычисления свойства кадра UIView (т. Е. Положения x, y-позиции, ширины, высоты).

Например, путем ограничения расстояния от верхнего, правого, нижнего и левого краев Autolayout имеет достаточно информации для рисования этого прямоугольника рамки UIView.Но вы также можете предоставить только ограничения расстояния от верхнего и левого краев, а затем предоставить ограничение по размеру и высоте.

Вы также можете настроить ключевые ограничения, которые вам нужны, а затем нажать «Разрешить автоматические макеты» и выбрать «добавить недостающие ограничения», хотя иногда это не дает вам то, что вы хотите. Лучше понять, как Autolayout выполняет то, что я описал выше.

Если вы испортили, обычно легче очистить все ограничения и начать все заново. Сделайте это несколько раз, и вы получите это.

+0

Спасибо, сейчас я пытаюсь выполнить эту задачу, но иногда я очень расстраиваюсь. – RikiRiocma

+0

если у вас есть конкретный вопрос о моем ответе, просто спросите! – believesInSanta

+0

BelievesInSanta, я благодарен вам, потому что, по крайней мере, вы мне ответили, и ваш ответ ясен и исчерпывающий. Я не хотел спорить с тобой, но с кем ниспослал меня без предварительного запроса, например, добавить дополнительную информацию. – RikiRiocma

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