Что такое «Варианты черт» в Xcode 8?


86

Я использую классы AutoLayout и Size, но с выпуском iOS 10 и нового Xcode 8.0 появилась одна новая опция Vary for Traits. Является ли это заменой Size Classe на разную ширину и высоту устройств.

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

При установке widthфлажка отображается varying 14 compact width devices.

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

При установке heightфлажка отображается varying 18 compact height devices.

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

При установке обоих флажков он отображается varying 11 compact width regular height devices.

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

Как использовать эти возможности? Можем ли мы использовать AutoLayout с классами размера, такими как Xcode7.0? Если у кого-то есть глубокие знания, пожалуйста, объясните это.


Посмотрите видео сессий WWDC 2016. Я уверен, что это где-то упоминалось как «новые возможности Xcode».
Martin R

Ответы:


133

Это просто дополнение к тому, как быстро использовать «Различные черты» в вашем проекте для добавления различных макетов для iPad и iPhone.

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

https://developer.apple.com/reference/uikit/uitraitcollection

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

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


  • ЗАДАЧА :

Вам нужна кнопка разной ширины на iPhone и iPad. Первый имеет ширину 80, а второй - 300.

  • СПОСОБ 1:

Варьируйте черты с несколькими ограничениями, как установлено.

  • ШАГИ:

    1. Сначала добавьте общие ограничения, например Центрировать кнопку по горизонтали и вертикали.

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

  1. Выберите VaryForTraits и для экранов iPhone в соответствии с рекомендациями по классам размера, класс размера C * R соответствует модели, и мы проверяем галочки ширины и высоты в PopUp. Закройте всплывающее окно, щелкнув в любом месте экрана.

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

  1. Добавьте константу ширины и проверьте, добавлено ли ограничение для класса размера C * R. После добавления ограничений нажмите кнопку Done Varying.

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

  1. Для экранов iPad снова выберите любое устройство iPad и выберите VaryForTraits, и на этот раз при нажатии на высоту и ширину он должен показать изменение R * R.

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

  1. Снова добавьте ограничение ширины, последнее добавленное ограничение ширины iPhone должно быть невыделено, как на снимке экрана. На этот раз добавленная стоимость будет для класса размера R * R.

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

  1. Вернитесь к макету iPhone, ширина будет 80, а для iPad - 300.

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

ВЫВОД :

Обратите внимание, что всего добавлено два ограничения, и в обоих ограничениях значения различаются в зависимости от выбранного класса размера.


  • СПОСОБ 2:

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

  • ШАГИ:
    1. Добавьте ограничение нормальной ширины. Затем выберите это ограничение и нажмите кнопку + рядом с постоянным значением.

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

  1. Добавьте вариацию признаков, и для iPhone мы выбираем C * R и устанавливаем постоянное значение 100.

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

  1. Опять же, для iPad, который следует за вариацией признака как R * R, мы добавляем другую вариацию, снова нажимая кнопку + и устанавливая значение 300.

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

  1. Выберите iPad, и ширина будет автоматически принята равной 300, а при возвращении на iPhone - 100.

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

ВЫВОД :

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

КОГДА ИСПОЛЬЗОВАТЬ, ЧТО ИСПОЛЬЗОВАТЬ:

Оба подхода в основном делают одно и то же, устанавливая значения для классов размера.

Но # Method1 используется, когда вы хотите добавить ограничение специально для устройства или, скажем, класса размера. Например, в iPhone кнопка должна быть от Top 50 пунктов, а в iPad она должна быть центрирована по горизонтали и вертикали. В таких ситуациях вам необходимо использовать VaryForTraits, поскольку он открывает двери для добавления ограничений для определенного класса размеров.

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

PS: ДЛЯ ВСЕХ, КТО НЕ МОЖЕТ ПОЛУЧИТЬ ПРИМЕР РАБОТЫ

Убедитесь, что вы добавляете только необходимые ограничения как установленные. Флажок «Установлено» должен отображаться только для ограничения, необходимого для класса размера. Это ключ!

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

Просто добавьте верхнее ограничение и ведущую к uiButton в представлении. Выберите верхнее ограничение и снимите флажок с базовой опции «Установлено» со знаком «плюс». Теперь, нажав на знак «Плюс», добавьте вариацию в C R и отметьте эту опцию. Теперь смените устройство с iPhone на iPad с различными комбинациями ориентации. Это ограничение будет применяться только для класса размера C R, который является iPhone в портретной ориентации. Если флажок рядом с основным установленным (тот, который отмечен символом плюса) установлен, это означает, что ограничение должно применяться ко всем классам размеров.

РЕЗЮМЕ :

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

  • Размер или положение вида

  • Установка вида

  • Установка ограничения

  • Константа ограничения

  • Шрифт

  • Цвет шрифта, оттенка или фона

  • Поля макета

  • Файл изображения

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


51
У меня это не работает .. Он обновляет ограничения для всех размеров экрана, и практически ничего не происходит ...
Дэн

5
Если не работает, попробуйте прочитать это: help.apple.com/xcode/mac/8.0/#/devba3dd0b51 . Если вы хотите настроить шрифт или другое свойство, нажмите «+», который находится слева от свойства на панели атрибутов. И вы не можете различать черты iPhone 4s и iPhone 7 Plus, например, в зависимости от ширины, поскольку они оба имеют компактную ширину. Вы можете варьировать их для iPhone и iPad.
Денис Кутлубаев

2
Работал у меня
спасибо

1
Это сработало для меня после того, как я удалил старое ограничение и добавил новое вместо замены его значения.
Теодор Чурару

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

21

Варианты черт - это эволюция опции классов размеров, которая присутствовала в прошлой версии Xcode. Это позволяет делать гораздо более изящные и точные вариации, основанные на чертах характера. Конечно, это не ограничивается только вариантами iPad / iPhone, но вы также можете указать варианты в зависимости от ориентации и другого устройства.

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

Примечание. Если не активирована опция «варьировать по признакам», все настройки макета и пользовательского интерфейса относятся ко всем признакам (т. Е. Всем классам размеров).

рисунок 1

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

фиг2

Теперь давайте включим «варьировать по признаку» и выберем вариацию в зависимости от роста. Вы должны увидеть, что нижний экран станет синим, и в соответствии с выбором вы увидите все затронутые устройства. Все идет нормально.

фиг3

Снова нажмите кнопку и добавьте обычные ограничения. В нашем примере мы добавим верхний и левый ведущий пробел, а также ширину и высоту. После этого нажмите «Готово». Вы увидите, что нижняя часть экрана снова станет серой. Что происходит, так это то, что мы сказали Interface Builder добавить вышеуказанные ограничения только для классов (w: C h: R).

фиг4

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

фиг5

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

рис6

Собери и беги. Вы увидите, что кнопка изменится в зависимости от ориентации экрана.

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


3
Я добавил ограничения для класса (wC, hR), затем нажал кнопку «Сделано». Когда я открываю (wR, hR), я также вижу старые ограничения. Как создать новые ограничения для (wR, hR) этого класса. Пожалуйста, скажите мне @valvolin
Рамчаран Редди

9

Это не что иное, как size classesон сам, но с другим представлением. до тех пор, пока xcode 7мы не использовали классы размеров, и мы рассматриваем их height-widthв regular,compact and anyпорядке, vary for traitsконцепция такая же, но xcode конкретно объясняет exact device. В более старой версии мы знаем эту и for every iphone in portraintт. Д. Информацию, в которой мы можем узнать точное устройство!

Проверьте снимки экрана ниже,

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

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

Вам следует обратиться к wwdc2016 - видео для получения дополнительной информации!

Ссылка: This So Post


Хорошо, позвольте мне проверить видео WWDC.
technerd 06

Вы правы, это не что иное, как эволюция размерных классов
Дурай Амутан.H
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.