Intereting Posts
Может ли приложение Apple Watch иметь несколько взглядов? Попытка вытащить свойства из другого класса в iOS iOS CoreBluetooth потерял локальную периферию.имя после подключения Как установить UILabel для использования Arial Narrow (программно) так же, как мы делаем на раскадровке? как решить недействительное предупреждение спецификатора преобразования в приложении iphone как остановить обновление func (_ currentTime: TimeInterval) в Spritekit Переупорядочить ALAssets SQLite + SQLCipher + FMDatabase на iOS Попробуйте HealthKit с iOS Simulator без учетной записи разработчика Сделать изображение можно настроить его высоту в соответствии с высотой изображения при уменьшении изображения из-за режима содержимого Проблемы с представлением контроллера UISplitViewController и Modal Как заставить SKSpriteNode снова появиться на противоположной стороне SKScene? Может ли мой синглтон быть улучшен? Создайте прозрачный календарь с календарем Tapku Запретить локализацию UILabel

Ограничения для универсальной раскадровки на iPhone

Я немного борюсь с ограничениями на iOS с различными размерами экранов в настоящее время.

Я попробовал google и stackoverflow, чтобы найти решение, но мой английский не кажется достаточно полным, чтобы найти ответ.

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

Есть ли что-то легкое и сложное, чтобы сделать эти ограничения правильными? Или я делаю это неправильно и должен ли я попытаться сделать это программно?

Борьба с ограничениями

благодаря

Решения этой проблемы очень просты. Это можно решить, используя концепцию «spacer views». Вы должны размещать невидимые виды между каждым красным цветом. Вам будет нужно 3 в вашем случае. Затем сделайте их фон чистым цветом. , Затем сделайте их ширину равной и ограничьте их ребра представлениями, которые находятся после и перед этим представлением. Затем вы определяете размер для красного цвета. ПОМНИТЕ, не давая «четкие цветные виды» любую фиксированную ширину. Это будет определяться временем выполнения. Это решит проблему. Скажите, требуется ли дополнительная информация.

Вот сообщение в блоге для решения этой проблемы http://adamdelong.com/fluid-layouts-with-auto-layout-size-classes-spacer-views-and-constraint-priorities/

Это видео youtube для этого https://www.youtube.com/watch?v=eSG-3-QpmWk&feature=youtu.be

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

Если вы собираетесь поддерживать только iOS 9 и выше, используйте UIStackView .

введите описание изображения здесь

Помимо ответа Tj3n с представлениями между кнопками, вы можете использовать

  • UIStackView (iOS 9!), Где вы используете для настроек Axis: horizontal , Distribution: equal spacing
  • Панель инструментов (зависит от того, что вы хотите делать с кнопками) с элементами панели инструментов и гибким пространством между ними

введите описание изображения здесь

Почему не размерные классы? Apple представила концепцию адаптивных пользовательских интерфейсов в iOS 8, опираясь на комбинацию классов Auto Layout и size.

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

Резюме: Apple очень ловко удалила двухэтажные борады для iphone и ipad и сделала одну доску для универсального приложения. Нет, вам не нужно бороться с попыткой применить ограничение автоопределения, которое удовлетворяет всем размерам экрана 🙂

Ниже приведены несколько классов размера и их значение 🙂 Регулярная ширина x Регулярная высота —-> IPad Режим потоотделения / режим ландшафта IPAD Компактная ширина x Регулярная высота —-> iPhone 6 плюс, iPhone 6, iPhone 5s, iPhone 5, iPhone 4s режим постороннего использования Компактная ширина X Компактная высота —-> iPhone 6, iPhone 5s, iPhone 5, iPhone 4s ландшафтный режим Обычная ширина x Компактная высота —-> iphone 6 плюс ландшафтный режим.

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

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

РЕЗЮМЕ: Бадди, если вы еще не используете класс размера, его время для его начала 🙂 В нем есть замечательное видео на яблочных сессиях WWDC 2014 года. Загрузите, смотрите, начните играть с ним.

Счастливое кодирование 🙂

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

 View1.trailing = superview.trailing*(2.0f/9.0f) View2.trailing = superview.trailing*(4.0f/9.0f) View3.trailing = superview.trailing*(6.0f/9.0f) View4.trailing = superview.trailing*(8.0f/9.0f) 

если вы делаете View1.width = superview.width*(1/9.0f) вы можете достичь того, чего хотите.

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

 View1.centerX = superview.trailing*(3.0f/15.0f) View2.centerX = superview.trailing*(6.0f/15.0f) View3.centerX = superview.trailing*(9.0f/15.0f) View4.centerX = superview.trailing*(12.0f/15.0f) 

Благодаря ответу LearneriOS я решил свою проблему.

Чтобы получить желаемый результат, я создал 3 вида с шириной 10.

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

Там важная часть: я перешел в меню ограничений и выбрал ограничение ширины. Значение внутри было еще 10, но я изменил приоритет с 1000 до 750.

Затем я копировал свой первый дополнительный просмотр и ограничивал их всех ближайшими кнопками, так же, как и с моим первым представлением entra, но я удалил ограничение ширины (ко всем дополнительным представлениям, кроме первого), и ограничил дополнительные представления с первым, подключив: Equals Width.

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

хорошие ограничения