共用方式為


在 Xamarin 中使用 tvOS 頁面控件

有時候您可能需要在 Xamarin.tvOS 應用程式中顯示一系列頁面或影像。 頁面控件的設計目的是要清楚顯示使用者所在的頁面數目上限。 頁面控件會針對深色橢圓形背景顯示一系列點。 目前的頁面會顯示填滿的點,所有其他頁面都會顯示為空心點。 如果背景區域太多,頁面控件會裁剪最外層的點數。

範例頁面控件

非互動式元素中的頁面控件,其設計目的是只提供意見反應給使用者。 您必須新增其他控制項來變更目前的頁碼(例如手勢或按鈕)。

使用頁面控件時,Apple 有下列建議:

  • 僅適用於 完整集合 - 頁面控件在全螢幕環境中最適合用來顯示存在於單一集合中的多個頁面。
  • 限制頁 數 - 頁面控件最適合十頁(10 頁)或更少的頁面,最多 20 頁(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) 為基礎,因此第一頁會是零,最後一頁會減去頁數上限。

如需使用分鏡腳本的詳細資訊,請參閱我們的 Hello, tvOS 快速入門指南

摘要

本文涵蓋在 Xamarin.tvOS 應用程式內設計和使用頁面控件。