2015-01-16 2 views
0

У меня есть самая простая настройка. Смотрите рис 1:Автоматическая компоновка не так авто

pic1

Верьте или нет, это мой первый проект с использованием AutoLayout, я создал все до программно. Эта базовая настройка - это буквально UIWebView с 1 пользовательским UIView, расположенным внизу. Раньше я использовал панель инструментов, которая обрабатывала все для меня и не имела никаких проблем с ограничениями. Однако на панели инструментов были созданы несоответствия для обработки событий при добавлении UILongPressGesture в подпункт UIBarButtonItem, поэтому я решил преобразовать панель инструментов в UIView (даже вставляя UIView в панель инструментов, он, естественно, преобразуется в элемент кнопки) для простота в обращении. Но во время выполнения, вид получает оттолкнулся экран на половину UIView размера (48px) См Pic 2. Затем, когда я добавить кнопки, она становится все хуже:

pic2

Я просмотрел документы и поддержка HERE без результатов. Я потратил около 24 часов на тотальное исследование и многому научился, поэтому мои усилия не вяжутся. Я ЗНАЛ с помощью «Добавление недостающих ограничений», ограничения - это всего лишь рекомендации, основанные на текущей настройке, они не являются конкретными во всех случаях, поэтому я попытался создать свой собственный с помощью управления перетаскиванием после просмотра документов, но мой набор завершились без разных результатов и экспоненциально более неаккуратными. Поэтому я решил включить заселенных ограничения по Xcode ниже:

UIWebView Ограничений

pic3

Пользовательские UIView (панель) Ограничения

pic4

Любой твердый отправной точкой рекомендации? Имеет ли Внутренний размер какое-либо отношение к этому?

EDIT: РАБОЧИЕ ОГРАНИЧЕНИЯ Я не знал, что вы можете просто опустить ограничение. Кажется, преступник добавлял один из лучших руководств по макету.

pic 5

Только для Отвечающего @ Matt:

Константа 0 результата: есть небольшие зазоры по краям

pic6

-16 для ведущего пространства/ведомых результаты космических, как настоящая эмуляция панели инструментов в моем случае без каких-либо выдающихся предупреждений или проблем. Спасибо

+0

В чем вопрос? Я не могу найти конкретную проблему среди всех разговоров здесь. – matt

+0

Эй, @ вопрос, вопрос не вопрос. Больше заявления. Мои ограничения макета не работают. Я добавил свои собственные ограничения, а не «Add Missing», но все равно результат UIView вытесняется с экрана. По существу спрашивая, что мне нужно сделать, чтобы он не отталкивался от экрана или не терял его рамки. – soulshined

+0

Переполнение колодца над вопросами - это не вопросы, а заявления. Если у вас есть конкретный вопрос, спросите его. «Хуже» не описание проблемы. Скажите четко, что происходит, что вы хотите и что вы пробовали. Дайте немного времени и подумайте о том, как структурировать свой вопрос. Это облегчит вам помощь (если вы хотите получить помощь). Благодаря! – matt

ответ

2

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

Чтобы использовать автоматическую компоновку, вам необходимо предоставить достаточную информацию для определения местоположения и размера. Это представление является подходом к главному виду контроллера.Основной вид будет изменен в зависимости от экрана, поэтому мы хотим использовать автоматическую компоновку для изменения размера поднабора («панель инструментов»). Это автоматический макет!

Таким образом, ограничьте передний фронт переднего края супервизора и ограничьте задний фронт субвизора к задней кромке супервизора, как с constant из 0. Теперь правый и левый края соответствуют супервину!

Это касается горизонтального положения и размера.

Теперь давайте поговорим о вертикальном положении. Позиция должна быть нижней. Поэтому ограничьте нижний край субвизора до нижней направляющей макета контроллера вида, опять же с constant из 0. Теперь нижняя часть представления находится внизу!

Единственное, что мы не знаем, это верхняя часть подсмотра. Это, в нашей ситуации, то же самое, что и знание его высоты. Поэтому дайте subview ограничение по высоте, установите его constant на разумное значение, например 40, и все готово.

+0

Ваше лучшее. Вы действительно, есть. Я исправил свои ограничения, и теперь все в рабочем состоянии. Но, пожалуйста, просмотрите мой отредактированный вопрос, ваши знания сейчас находчивы, я здесь, чтобы учиться. Можете ли вы предложить информацию о том, почему установка ограничения на -16, как и xCode, обеспечивает работу, но константа 0 - нет? Когда константа 0 имеет больше смысла для меня? Кстати, проблема заключалась в том, что я добавлял ограничение верхнего макета, которое вызывало его нажатие, я не понимал, что его можно опустить, я думал, что все 4 были использованы в тандеме. Опуская его, исходя из вашей рекомендации, это заклинатель! – soulshined

+0

Вы перепутались с полями. См. Мой ответ здесь: http: // stackoverflow.com/a/27976007/341994 – matt

+0

ваш слишком хороший. Спасибо - – soulshined

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