Работа с элементами управления страницы tvOS в Xamarin
Иногда может потребоваться отобразить ряд страниц или изображений в приложении Xamarin.tvOS. Элемент управления страницей был разработан для четкого отображения того, на какой странице пользователь находится вне максимального количества страниц. Элемент управления страницей отображает ряд точек на темном овальном фоне. Текущая страница будет отображать заполненную точку, все остальные страницы отображаются как пустые точки. Элемент управления Page закрепит внешние точки, если в фоновой области слишком много.
Элемент управления страницей в неинтерактивном элементе, предназначенный для предоставления отзывов только пользователю. Вам потребуется добавить другие элементы управления, чтобы изменить текущий номер страницы (например, жесты или кнопки).
Apple имеет следующие предложения при использовании элемента управления страницей:
- Используйте только полные коллекции . Элементы управления страницами лучше всего работают в полноэкранной среде для отображения нескольких страниц, существующих в одной коллекции.
- Ограничение числа страниц — элементы управления страницами лучше всего работают для десяти (10) или меньше страниц и не более двадцати (20) страниц. Для более чем двадцати страниц рекомендуется использовать представление коллекции и отображать страницы в сетке.
Элементы управления страницами и раскадровки
Самый простой способ работы с элементами управления страницами в приложении Xamarin.tvOS — добавить их в пользовательский интерфейс приложения с помощью конструктора iOS.
На панели решений дважды щелкните
Main.storyboard
файл и откройте его для редактирования.Перетащите элемент управления страницы из панели элементов и удалите его в представлении:
На вкладке "Мини-приложение" панели свойств можно настроить несколько свойств элемента управления страницей, например текущую страницу и #страниц:
Затем добавьте элементы управления или жесты в представление, чтобы переместиться назад и вперед через коллекцию страниц.
Наконец, назначьте имена элементам управления, чтобы они могли реагировать на них в коде C#. Например:
Сохранение изменений.
Внимание
Хотя можно назначить такие события, как элемент пользовательского интерфейса (например, 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.