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

Иногда может потребоваться отобразить ряд страниц или изображений в приложении Xamarin.tvOS. Элемент управления страницей был разработан для четкого отображения того, на какой странице пользователь находится вне максимального количества страниц. Элемент управления страницей отображает ряд точек на темном овальном фоне. Текущая страница будет отображать заполненную точку, все остальные страницы отображаются как пустые точки. Элемент управления Page закрепит внешние точки, если в фоновой области слишком много.

Пример элемента управления Page

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

Apple имеет следующие предложения при использовании элемента управления страницей:

  • Используйте только полные коллекции . Элементы управления страницами лучше всего работают в полноэкранной среде для отображения нескольких страниц, существующих в одной коллекции.
  • Ограничение числа страниц — элементы управления страницами лучше всего работают для десяти (10) или меньше страниц и не более двадцати (20) страниц. Для более чем двадцати страниц рекомендуется использовать представление коллекции и отображать страницы в сетке.

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

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

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

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

    Элемент управления страницей

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

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

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

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

    Имя элемента управления

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

Внимание

Хотя можно назначить такие события, как элемент пользовательского интерфейса (например, UIButton) в конструкторе iOS, он никогда не будет вызываться, так как TouchUpInside Apple TV не имеет сенсорного экрана или поддерживает события сенсорного ввода. При создании обработчиков событий для элементов пользовательского интерфейса tvOS всегда следует использовать Primary Action событие.

Измените файл контроллера представления (пример ViewController.cs) и добавьте код для обработки измененных страниц. Например:

using System;
using Foundation;
using UIKit;

namespace MySingleView
{
    public partial class ViewController : UIViewController
    {
        #region Computed Properties
        public nint PageNumber { get; set; } = 0;
        #endregion

        #region Constructors
        public ViewController (IntPtr handle) : base (handle)
        {
        }
        #endregion

        #region Override Methods
        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            // Initialize
            PageView.Pages = 6;
            ShowCat ();
        }

        public override void DidReceiveMemoryWarning ()
        {
            base.DidReceiveMemoryWarning ();
            // Release any cached data, images, etc that aren't in use.
        }
        #endregion

        #region Custom Actions
        partial void NextCat (UIBarButtonItem sender) {

            // Display next Cat
            if (++PageNumber > 5) {
                PageNumber = 5;
            }
            ShowCat();

        }

        partial void PreviousCat (UIBarButtonItem sender) {
            // Display previous cat
            if (--PageNumber < 0) {
                PageNumber = 0;
            }
            ShowCat();
        }
        #endregion

        #region Private Methods
        private void ShowCat() {

            // Adjust UI
            PreviousButton.Enabled = (PageNumber > 0);
            NextButton.Enabled = (PageNumber < 5);
            PageView.CurrentPage = PageNumber;

            // Display new cat
            CatView.Image = UIImage.FromFile(string.Format("Cat{0:00}.jpg",PageNumber+1));
        }
        #endregion
    }
}

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

PageView.Pages = 6;

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

PageView.CurrentPage = PageNumber;

Свойство CurrentPage равно нулю (0), поэтому первая страница будет нулевым, а последняя будет минус максимальное количество страниц.

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

Итоги

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