在 Xamarin 中使用 tvOS 按鈕

警告

iOS 設計工具在 Visual Studio 2019 16.8 版和 Visual Studio 2019 for Mac 8.8 版中已被取代,並在 Visual Studio 2019 16.9 版和 Visual Studio for Mac 8.9 版中移除。 建置 iOS 使用者介面的建議方式是直接在執行 Xcode 介面產生器的 Mac 上。 如需詳細資訊,請參閱 使用 Xcode 設計使用者介面。

使用 類別的 UIButton 實例,在tvOS視窗中建立可設定焦點且可選取的按鈕。 當使用者選取按鈕時,它會將動作訊息傳送至目標物件,讓您的 Xamarin.tvOS 應用程式回應使用者的輸入。

範例按鈕

如需使用焦點並使用 Siri 遠端巡覽的詳細資訊,請參閱我們的使用導覽和焦點Siri 遠端和 藍牙 控制器檔。

關於按鈕

在tvOS中,按鈕會用於應用程式特定的動作,而且可能包含標題、圖示或兩者。 當使用者使用 Siri 遠端瀏覽應用程式的使用者介面時,焦點會移至指定的按鈕,使其變更文字和背景色彩。 陰影也會套用至 [按鈕] 新增 3D 效果,使其看起來會高於使用者介面的其餘部分。

範例按鈕

Apple 有下列使用 Buttons 的建議:

  • 使用 [標題] 或 [圖示 ] - 雖然圖示和標題都可以包含在 Button 中,但空間有限,因此請嘗試不要合併兩者。
  • 清楚標示破壞性按鈕 - 如果按鈕執行破壞性動作(例如刪除檔案),請清楚標示為使用文字和/或圖示。 破壞性動作應該一律顯示 警示 ,要求使用者限制動作。
  • 不要使用 [上一頁] 按鈕 - Siri 遠端上的 [功能表] 按鈕是用來返回上一個畫面。 此規則的其中一個例外是應用程式內購買或應該顯示 [取消] 按鈕的破壞性動作

如需使用焦點和瀏覽的詳細資訊,請參閱我們的 使用導覽和焦點 檔。

按鈕圖示

Apple 建議您針對按鈕圖示使用簡單、高辨識的影像。 過於複雜的圖示很難辨識在沙發上房間的電視螢幕上,因此請嘗試使用最簡單的表示法,讓想法跨越。 盡可能使用標準、熟悉的圖示影像(例如用於搜尋的放大鏡)。

按鈕標題

在建立按鈕的標題時,Apple 有下列建議:

  • 在圖示按鈕 下方顯示描述性文字 - 盡可能將清楚的描述性文字放在圖示下方,只顯示按鈕,以進一步取得按鈕的用途。
  • 針對標題 使用動詞或動詞詞組 - 清楚指出使用者按下按鈕時所要執行的動作。
  • 使用標題樣式大寫 - 除了文章、結合或述詞(四個字母或更少字母)之外,按鈕標題的每個單字都應該大寫。
  • 使用簡短的點 標題 - 使用最短的可能動詞來描述 Button 的動作。

按鈕和分鏡腳本

使用 Xamarin.tvOS 應用程式中按鈕的最簡單方式是使用 Xamarin Designer for iOS 將它們新增至應用程式的 UI。

  1. 方案總管 中,按兩下Main.storyboard檔案,然後開啟檔案進行編輯。

  2. 從文檔拖曳按鈕,並將它放在 [檢視] 上:

    A 按鍵

  3. 在 [屬性總管] 中,您可以調整按鈕的數個屬性,例如其 [標題] 和 [文字色彩]:

    按鈕屬性

  4. 接下來,切換至 [事件] 索引標籤,然後從按鈕連接事件,並呼叫它ButtonPressed

    [事件] 索引標籤

  5. 您將會自動切換至檢視, ViewController.cs 您可以在其中使用 向上 鍵和 向下 鍵,將新的動作放在程式代碼中:

    將新的動作放在程式代碼中

  6. 按 Enter 鍵以選取位置:

    程式代碼編輯器

  7. 儲存所有檔案的變更。

只要按鈕的 Enabled 屬性是 true ,而且它未由另一個控件或檢視所涵蓋,就可以使用 Siri 遠端將焦點項目設為焦點專案。 如果用戶選取按鈕並按下 Touch Surface, ButtonPressed 則會執行上述定義的動作。

重要

雖然在建立事件處理程式時可以指派動作,UIButtonTouchUpInside永遠不會呼叫它,因為 Apple TV 沒有觸摸屏或支援觸控事件。 建立tvOS使用者介面元素的動作時,您應該一律使用預設的動作類型

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

按鈕和程序代碼

您可以選擇性地 UIButton 在 C# 程式代碼中建立 ,並將 新增至 tvOS 應用程式的檢視。 例如:

var button = new UIButton(UIButtonType.System);
button.Frame = new CGRect (25, 25, 300, 150);
button.SetTitle ("Hello", UIControlState.Normal);
button.AllEvents += (sender, e) => {
    // Do something when the button is clicked
    ...
};
View.AddSubview (button);

當您在程式代碼中建立新的 UIButton 時,您會將其指定 UIButtonType 為下列其中一項:

  • 系統 - 這是 tvOS 所呈現的標準按鈕類型,也是您最常使用的類型。
  • DetailDisclosure - 呈現用來隱藏或顯示詳細資訊的「關閉」按鈕類型。
  • InfoDark - 深色詳細資訊按鈕在圓形中顯示 “i”。
  • InfoLight - 淺色詳細資訊按鈕在圓形中顯示 “i”。
  • AddContact - 將按鈕顯示為 [新增聯繫人] 按鈕。
  • 自訂 - 可讓您自訂按鈕的數個特性。

接下來,您會定義按鈕的螢幕大小和位置。 範例:

button.Frame = new CGRect (25, 25, 300, 150);

然後,設定按鈕的標題。 UIButtons 與大部分 UIKit 控制項不同,因為它們具有 State,因此您不只要變更標題,您必須變更指定的 UIControlState。 例如:

button.SetTitle ("Hello", UIControlState.Normal);

接下來,使用 AllEvents 事件來查看使用者何時按下按鈕。 範例:

button.AllEvents += (sender, e) => {
    // Do something when the button is clicked
    ...
};

最後,您會將按鈕新增至檢視以顯示它:

View.AddSubview (button);

重要

雖然可以將這類 TouchUpInside 動作指派給 UIButton,但永遠不會呼叫,因為 Apple TV 沒有觸摸屏或支援觸控事件。 您應該一律使用 AllEventsPrimaryActionTriggered事件。

設定按鈕樣式

tvOS 提供數個 UIButton 屬性,可用來提供其標題和樣式與背景色彩和影像等專案。

按鈕標題

如上所述, UIButtons 與大部分 UIKit 控件不同,因為它們具有狀態,因此您不只要變更標題,您必須針對指定的 UIControlState變更它。 例如:

button.SetTitle ("Hello", UIControlState.Normal);

您可以使用 方法來設定按鈕 SetTitleColor 的標題色彩。 例如:

button.SetTitleColor (UIColor.White, UIControlState.Normal);

您可以使用 來調整標題的陰影 SetTitleShadowColor。 例如:

button.SetTitleShadowColor(UIColor.Black, UIControlState.Normal);

您可以使用下列程式代碼,將標題陰影設定為從 [雕刻 ] 變更為 [浮凸 ] :

button.ReverseTitleShadowWhenHighlighted = true;

此外,您可以使用屬性化文字作為按鈕的標題。 例如:

var normalAttributedTitle = new NSAttributedString (buttonTitle, foregroundColor: UIColor.Blue, strikethroughStyle: NSUnderlineStyle.Single);
myButton.SetAttributedTitle (normalAttributedTitle, UIControlState.Normal);

var highlightedAttributedTitle = new NSAttributedString (buttonTitle, foregroundColor: UIColor.Green, strikethroughStyle: NSUnderlineStyle.Thick);
myButton.SetAttributedTitle (highlightedAttributedTitle, UIControlState.Highlighted);

按鈕影像

UIButton可以附加影像,而且可以使用影像作為其背景。

若要指定設定按鈕 UIControlState的背景影像,請使用下列程式代碼:

button.SetBackgroundImage(UIImage.FromFile("my image.png"), UIControlState.Normal);

AdjustsImageWhenHiglighted 屬性設定為 true ,以在反白顯示按鈕時繪製較輕的影像(這是預設值)。 將 AdjustsImageWhenDisabled 屬性設定為 true ,以在停用按鈕時繪製更深的影像(同樣地,這是預設值)。

若要設定按鈕上顯示的影像,請使用下列程式代碼:

button.SetImage(UIImage.FromFile("my image.png"), UIControlState.Normal);

TintColor使用 屬性可設定套用至標題和按鈕影像的色彩色調。 對於類型的按鈕 Custom ,這個屬性沒有任何作用,您必須自行實作 TintColor 行為。

摘要

本文涵蓋在 Xamarin.tvOS 應用程式內設計和使用按鈕。 它示範如何使用 iOS 設計工具中的按鈕,以及如何在 C# 程式代碼中建立按鈕。 最後,它示範如何修改按鈕的標題,並變更其樣式和外觀。