Подтвердить что ты не робот

Что такое "Vary for Traits" в XCode 8?

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

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

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

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

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

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

Выбрав оба флажка, он отобразит varying 11 compact width regular height devices.

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

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

4b9b3361

Ответ 1

Это просто расширение того, как быстро использовать "Vary Traits" в вашем проекте для добавления разных макетов для iPad и iPhone.

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

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

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

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


  • ЦЕЛЬ:

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

  • МЕТОД 1:

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

  • ШАГИ:

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

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

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

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

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

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

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

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

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

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

  1. Вернитесь к макету iPhone, и он займет 80 по ширине, а iPad займет 300.

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

ЗАКЛЮЧЕНИЕ:

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


  • МЕТОД 2:

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

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

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

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

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

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

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

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

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

ЗАКЛЮЧЕНИЕ:

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

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

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

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

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

P.S: ВСЕ, КОТОРЫЕ НЕ ДОЛЖНЫ ПОЛУЧИТЬ РАБОТУ ПРИМЕРОВ

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

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

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

РЕЗЮМЕ:

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

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

  • Установка представления

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

  • Константа константы

  • Шрифт

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

  • Поля макета

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

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

Ответ 2

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

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

Примечание. Если параметр "изменяться для признаков" не включен, все настройки макета и ui относятся ко всем признакам (т.е. к классам всех классов).

fig1

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

fig2

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

fig3

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

fig4

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

fig5

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

fig6

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

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

Ответ 3

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

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

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

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

Для получения дополнительной информации вы должны обратиться wwdc2016 - video

Ссылка: This So Post