Проблемы с автомакетом на больших устройствах

Я разрабатываю приложение для iPhone, в котором я сделал эту страницу с помощью автомакета.

но он показывает ненужные пробелы над Register Me (желтая кнопка) в больших iPhone

Даны ограничения: верхнее, нижнее, ведущее и замыкающее по отношению к его подпредставлениям для всех элементов управления. (в xcode нет предупреждений или неуместных ограничений)

Вот скриншот iPhone 4s введите здесь описание изображения

Вот скриншот iPhone 6+ введите здесь описание изображения

Я хочу минимизировать пустое пространство в больших iPhone... Как мне решить эту проблему?

Пожалуйста, помогите и заранее спасибо


person Krunal    schedule 19.05.2016    source источник
comment
Это проблема дизайна без общего ответа. Это то, о чем вы должны решить - вы должны определить, чего вы хотите.   -  person luk2302    schedule 19.05.2016
comment
Данные ограничения: верхнее, нижнее, ведущее и замыкающее по отношению к своим подпредставлениям для всех элементов управления. если вы укажете нижнюю часть кнопки, это создаст проблемы, поэтому ограничение кнопки зарегистрировать меня должно быть верхним (ВЫ БУДЕТ РЕГИСТРАЦИОННЫМ НИЗОМ), ведущим, замыкающим и верхним   -  person Prashant Tukadiya    schedule 19.05.2016
comment
если вы хотите, чтобы все было в центре, например, на экране iphone 4, другим решением может быть то, что вы можете поместить все в представление, выровняв его по вертикали, по центру по горизонтали с помощью supverview решит вашу проблему.   -  person Prashant Tukadiya    schedule 19.05.2016


Ответы (8)


Вот предложение для вас. У вас есть примерно семь областей интереса. Первая — это заголовок «Регистрация Кано…» и т. д. Затем идут 5 областей ввода текста — имя, электронная почта, пароль и т. д. Наконец, у вас есть 3 небольшие строки информационного текста — я бы посчитал это последней областью, поэтому 7 в целом.

Что бы я сделал, так это создал бы 7 родительских UIView, чтобы поместить эти вещи. Я бы дал им ограничения «равной высоты» и заставил их сидеть выше и ниже друг друга без зазора. Затем, когда экран iphone меняет высоту, эти области растягиваются по высоте, чтобы заполнить область. Вот грубый макет:

7 родительских UIView одинакового размера для размещения ваших материалов

Выберите все эти UIViews и выберите ограничение «равной высоты»:

Равная высота (обратите внимание на галочку)

Тогда каждому представлению, кроме нижнего, нужны эти ограничения (верхнее, ведущее к суперпредставлению 0px)

Сверху, впереди и сзади

Тогда вашему нижнему виду тоже нужны эти плюс «дно»:

То же самое, но и снизу

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

person Luke Smith    schedule 19.05.2016
comment
Вы можете просто сделать это, используя ограничение соотношения сторон вместо того, чтобы размещать каждый компонент в различных представлениях контейнера. - person Dharmendra Chaudhary; 19.05.2016

Если вы намерены ориентироваться на пользователей iOS 9, вам следует использовать UIStackView, the provide a lot of гибкость с точки зрения выравнивания и распределения. Если нет, то вы или ваша команда дизайнеров должны найти решение.

person BangOperator    schedule 19.05.2016
comment
Мое приложение также поддерживает iOS 7, Stackview доступен после iOS 9 :( - person Krunal; 19.05.2016
comment
В порядке. Итак, теперь, когда я хочу минимизировать пустое пространство в больших iPhone, может быть много ответов. Поместите его на вид, выровняйте по центру по горизонтали. Поместите все в прокрутку и т. Д. И т. Д. - person BangOperator; 19.05.2016

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

Что-то вроде :

myControl.heightConstraint.constant += 20.0f

Я бы сделал так, но вам нужно решить, как вы обновите свой макет для больших устройств.

person David 'mArm' Ansermot    schedule 19.05.2016
comment
Как добавить такое ограничение в раскадровку только для больших iPhone? - person Krunal; 19.05.2016
comment
У вас есть два варианта: 1) Программно 2) Используя SizeClass, чтобы установить обновленное ограничение только для определенных размеров - person David 'mArm' Ansermot; 19.05.2016

@Krunal, вы можете использовать класс размера и установить соответствующие ограничения, чтобы получить краткое представление о том, как адаптировать дизайн пользовательского интерфейса для каждого устройства !!

person Sanjeet verma    schedule 19.05.2016

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

registerLabel.leading = baseView.leading
registerLabel.trailing = baseView.trailing
registerLabel.top     = baseView.top
registerLabel.bottom  = baseView.bottom * (1/8)// it will be always proportional to height of view

то для иконок в начале firstIcon

firstIcon.leading = baseView.leading + 10
firstIcon.height  = firstIcon.width
firstIcon.height  = baseView.height*(1/9)// to give a gap between icons
firstIcon.bottom  = baseView.bottom * (2/8)

а затем вы можете установить ограничения текстового поля в соответствии с firstIcon

для других значков вы можете использовать 3/8, 4/8, 5/8, 6/8 и установить относительные ограничения текстовых полей в соответствии с этим значком.

и, наконец, для кнопки registerMe

registerButton.leading  = baseView.leading
registerButton.trailing = baseView.trailing
registerButton.bottom   = baseView.bottom
registerLabel.height    = baseView.height * (1/8)

При таком подходе размер ваших значков также уменьшается и увеличивается относительно высоты просмотра, и вся страница будет заполнена.

baseView - вид контроллера.

person meth    schedule 19.05.2016

Что здесь происходит, вы сохранили ширину в соответствии с супервизором, т.е. шириной телефона, но ваша высота фиксирована.

Сделайте одну вещь вместо того, чтобы задавать ограничение по высоте, используйте соотношение сторон в сочетании с начальным, конечным и верхним ограничением. Когда представление будет растягиваться по ширине, высота вашего компонента также увеличится и заполнит дополнительное пространство для iphone 6.

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

person Dharmendra Chaudhary    schedule 19.05.2016

Кажется, вы указали фиксированную высоту в представлениях.

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

Поэтому попробуйте разделить часть View, тогда зависимость ограничений уменьшится.

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

Затем начните задавать те же ограничения для кнопки «Регистрация». Конечно, это поможет вам в решении этой проблемы.

person Santo    schedule 19.05.2016

Эй, лучшее решение для вас - это stackView. Объедините свои объекты в одном stackView. Вы можете комбинировать свой объект по вертикали, а также по горизонтали. Это уменьшит ваше пространство, а вид будет организован удивительным образом. Вы можете выбрать свои объекты следующим образом.selected image Нажмите здесь, чтобы собрать его в стопку. stack button Теперь вы можете уменьшить пространство таким образом.

person Dhruv Khatri    schedule 19.05.2016