Бөлісу құралы:


Работа с сегментированных элементов управления tvOS в Xamarin

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

Примеры элементов управления сегментами

Apple предлагает следующие предложения по работе с сегментированных элементов управления:

  • Предоставление достаточного пространства. Необходимо обеспечить достаточное пространство между другими фокусируемыми элементами и сегментируемым элементом управления. Отдельный сегмент выбирается, когда он находится в фокусе (не при щелчке), и пользователь может случайно изменить сегменты, когда они действительно хотят выбрать другой фокусируемый элемент в текущем сегменте.
  • Используйте разделенные представления для фильтрации содержимого. Сегментированные элементы управления не делают правильный выбор для фильтрации содержимого, так как разделенные представления предназначены для простой навигации между содержимым и фильтрами.
  • Ограничение до семи сегментов Макс . Вы должны попытаться сохранить максимальное количество сегментов ниже восьми (8), так как это проще проанализировать по всей комнате на диване и упростить навигацию.
  • Используйте согласованный размер содержимого сегмента. Все сегменты имеют одинаковую ширину и, если это возможно, следует попытаться сохранить содержимое в каждом сегменте одинакового размера. Это не только делает элементы управления сегментов более визуальным, но и упрощает чтение на первый взгляд.
  • Избегайте смешивания значков и текста . Каждый отдельный сегмент может содержать значок или текст, но не оба. Хотя можно смешивать значки и текст в одном сегментованном элементе управления, это следует избежать.

Сведения о значках сегментов

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

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

Сегментирование текста

Apple предлагает следующие предложения по работе с текстом сегмента:

  • Используйте короткие, значимые существительные . Заголовок сегмента должен четко указать тип содержимого, которое пользователь должен ожидать при выборе данного сегмента. Например, музыка или видео.
  • Используйте заглавную букву заглавной буквы. Каждое слово заголовка сегментов должно быть заглавно, за исключением статей, сочетаний и предпозиций менее четырех (4) символов.
  • Используйте короткие, ориентированные заголовки. Сохраняйте заголовки , короткие и сосредоточены на типе контента, который следует ожидать при выборе сегмента.

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

Элементы управления сегментами и раскадровки

Самый простой способ работы с элементами управления сегментами в приложении Xamarin.tvOS — добавить их в пользовательский интерфейс приложения с помощью конструктора iOS.

  1. На панели решений дважды щелкните Main.storyboard файл и откройте его для редактирования.

  2. Перетащите элемент управления "Сегмент" из панели элементов и удалите его в представлении:

    Элемент управления сегментом

  3. На вкладке "Мини-приложение" панели свойств можно настроить несколько свойств элемента управления сегментом, например его стиль и состояние:

    Вкладка мини-приложения

  4. Используйте поле "Сегменты" для управления количеством сегментов в контроллере.

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

  6. Наконец, назначьте имена элементам управления, чтобы они могли реагировать на них в коде C#. Например:

    Назначение имени

  7. Сохранение изменений.

Дополнительные сведения о работе с раскадровками см. в руководстве по началу работы с раскадровки Hello, tvOS.

Работа с сегментированных элементов управления

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

В приложении Xamarin.tvOS можно работать с сегментированных элементов управления.

Предоставляется как имена и события

Если вы создали элемент управления сегментом в конструкторе интерфейсов и предоставили его как именованный элемент управления и событие, можно использовать следующий код для реагирования на изменение сегмента:

partial void PlayerCountChanged (Foundation.NSObject sender) {

    // Take action based on the number of players selected
    switch(PlayerCount.SelectedSegment) {
    case 0:
        // Do something if the segment is selected
        ...
        break;
    case 1:
        // Do something if the segment is selected
        ...
        break;
    case 2:
        // Do something if the segment is selected
        ...
        break;
    }
}

В приведенном выше примере элемент управления сегментом был предоставлен в виде PlayerCount имени и PlayerCountChanged действия события. Дополнительные сведения о работе с действиями и точками см. в разделе "Написание кода с точками и действиями " в нашем кратком руководстве по началу работы с Hello, tvOS.

Свойство SelectedSegment получает или задает выбранный в данный момент сегмент в виде нулевого (0) индекса. Таким образом, если у вас есть пять (5) сегментов, первый сегмент будет иметь индекс нуля (0) и последний индекс из четырех (4).

Изменение сегментов

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

// Icon Segment
SegmentedControl.InsertSegment(UIImage.FromFile("icon.png"), 0, true);

// Text Segment
SegmentedControl.InsertSegment("New Segment", 0, true);

Второй параметр определяет, где сегмент будет вставлен с помощью нулевого (0) индекса. Если последний параметр — true вставка, будет анимирована.

Чтобы удалить данный сегмент, используйте следующее:

SegmentedControl.RemoveSegmentAtIndex(0, true);

Или выполните следующие действия, чтобы удалить все сегменты:

SegmentedControl.RemoveAllSegments();

Опять же, если последний параметр имеет trueзначение, удаление будет анимировано. NumberOfSegments Используйте свойство для возврата текущего числа сегментов.

Чтобы получить заголовок или значок для данного сегмента, используйте следующее:

// Get title
var title = SegmentedControl.TitleAt(0);

// Get icon
var icon = SegmentedControl.ImageAt(0);

Чтобы изменить название или значок, используйте следующее:

// Set title
SegmentedControl.SetTitle("New Title", 0);

// Set icon
SegmentedControl.SetImage(UIImage.FromFile("icon.png"), 0);

Чтобы узнать, включен ли данный сегмент, используйте следующее:

if (SegmentedControl.IsEnabled(0)) {
    // Do something
    ...
}

Чтобы включить или отключить данный сегмент, используйте следующее:

SegmentedControl.SetEnabled(false, 0);

Изменение внешнего вида сегментированного элемента управления

Для изменения фона данного сегмента на изображение можно использовать следующий код:

SegmentedControl.SetBackgroundImage (UIImage.FromFile("background.png"), UIControlState.Normal, UIBarMetrics.Default);

Где UIControlState указывает состояние элемента управления, для которого вы задаете изображение следующим образом:

  • Обычная
  • Выделены
  • Выключено
  • Выбрано
  • Режим фокусировки

И UIBarMetrics задает метрики, которые следует использовать следующим образом:

  • По умолчанию.
  • Compact
  • DefaultPrompt
  • CompactPrompt

Кроме того, можно задать разделитель между сегментами с помощью:

SegmentedControl.SetDividerImage (UIImage.FromFile("divider.png"), UIControlState.Normal, UIControlState.Normal, UIBarMetrics.Default);

Где первый UIControlState указывает состояние сегмента слева от разделителя, а второй UIControlState — состояние сегмента справа.

Итоги

В этой статье рассматривается проектирование и работа с сегментированных элементов управления внутри приложения Xamarin.tvOS.