在 Xamarin 中使用 tvOS 页面控件

有时,可能需要在 Xamarin.tvOS 应用中显示一系列页面或图像。 页面控件旨在清楚地显示用户位于最大页面数中的哪一页。 页面控件在深色椭圆形背景上显示一系列点。 当前页面将显示实心点,所有其他页面显示为空心点。 如果背景区域中的点太多而无法容纳,则页面控件将剪裁掉最外部的点。

示例页面控件

非交互式元素中的页面控件,用于仅向用户提供反馈。 需要添加其他控件来更改当前页码(如手势或按钮)。

Apple 提供使用页面控件时的以下建议:

  • 仅用于完整集合 - 页面控件在全屏环境中效果最佳,可显示单个集合中存在的多个页面。
  • 限制页数 - 页面控件最适合十 (10) 页或更少的页面,最多二十 (20) 页。 对于 20 页以上的页面,请考虑使用集合视图并在网格中显示页面。

页面控件和情节提要

在 Xamarin.tvOS 应用中使用页面控件的最简单方法是使用 iOS 设计器将其添加到应用的 UI 中。

  1. 在“Solution Pad”中,双击 Main.storyboard 文件并将其打开进行编辑。

  2. 将“页面控件”从“工具箱”拖放到“视图”上

    页面控件

  3. 在“Properties Pad”的“小组件”选项卡中,可以调整页面控件的多个属性,例如“当前页”和“页数”

    “小组件”选项卡

  4. 接下来,向视图添加控件或手势,以在页面集合中向前和向后移动。

  5. 最后,为控件分配名称,以便可以用 C# 代码响应它们。 例如:

    为控件命名

  6. 保存所做更改。

重要

虽然可以在 iOS 设计器中为 UI 元素(如 UIButton)分配 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),因此第一页将为零,最后一页为 1 减去最大页数。

有关使用情节提要的详细信息,请参阅你好,tvOS 快速入门指南

总结

本文介绍了 Xamarin.tvOS 应用中的页面控件的设计和使用方法。