在 Xamarin 中使用 tvOS 按钮
警告
iOS Designer 在 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 的 Interface Builder 的 Mac 上操作。 有关详细信息,请参阅用 Xcode 设计用户界面。
使用类的 UIButton
实例在 tvOS 窗口中创建可聚焦的可选择按钮。 当用户选择按钮时,它会向目标对象发送操作消息,使 Xamarin.tvOS 应用能够响应用户的输入。
有关使用 Focus 和使用 Siri 远程导航的详细信息,请参阅我们的“使用导航”和“焦点”和“Siri 远程”以及“蓝牙控制器”文档。
关于按钮
在 tvOS 中,按钮用于特定于应用的操作,并且可能包含标题、图标或两者。 当用户使用 Siri 远程导航应用的用户界面时,焦点会转移到给定的按钮,以便更改文本和背景颜色。 阴影还应用于按钮,添加 3D 效果,使其似乎高于用户界面的其余部分。
Apple 有以下使用按钮的建议:
- 使用标题或图标 - 虽然图标和标题都可以包含在按钮中,但空间有限,因此尽量不要合并这两者。
- 清楚地标记破坏性按钮 - 如果按钮执行破坏性操作(如删除文件),请清楚地将其标记为使用文本和/或图标。 破坏性操作应始终显示一个 警报 ,要求用户限制该操作。
- 请勿使用后退按钮 - Siri 远程上的菜单按钮用于返回到上一个屏幕。 此规则的一个例外是应用内购买或破坏性操作,其中 应显示“取消” 按钮。
有关使用焦点和导航的详细信息,请参阅我们的 “使用导航”和“焦点” 文档。
按钮图标
Apple 建议为按钮图标使用简单且高度可识别的图像。 过于复杂的图标很难在沙发上房间的电视屏幕上识别出来,因此,请尝试使用最简单的表示形式来了解这一点。 尽可能对图标使用标准、众所周知的图像(如放大镜)进行搜索。
按钮标题
为按钮创建游戏时,Apple 具有以下建议:
- 在图标按钮 下方显示描述性文本 - 尽可能将清晰的描述性文本放在图标下方,以便进一步获取按钮的用途。
- 对标题 使用谓词或谓词短语 - 清楚地说明当用户单击按钮时将执行的操作。
- 使用标题样式大写 - 除了文章、连词或介词(四个字母或更少),按钮标题的每个单词都应大写。
- 使用短到点标题 - 使用最短的可能谓词来描述按钮的操作。
按钮和情节提要
使用 Xamarin.tvOS 应用中的按钮的最简单方法是使用适用于 iOS 的 Xamarin Designer 将它们添加到应用的 UI。
只要按钮 Enabled
的属性不受 true
其他控件或视图覆盖,就可以使用 Siri Remote 将其设为焦点项。 如果用户选择按钮并单击 Touch Surface, ButtonPressed
将执行上面定义的操作。
重要
虽然可以分配诸如创建事件处理程序时的操作TouchUpInside
UIButton
,但永远不会调用它,因为 Apple TV 没有触摸屏或支持触摸事件。 创建 tvOS 用户界面元素的操作时,应始终使用默认操作类型。
有关使用情节提要的详细信息,请参阅我们的 Hello,tvOS 快速入门指南。
按钮和代码
(可选)可以在 C# 代码中创建 a UIButton
,并将其添加到 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
控件不同的是,它们具有一个状态,因此你不能只是更改标题,你必须为给定 UIControlState
更改它。 例如:
button.SetTitle ("Hello", UIControlState.Normal);
接下来,使用 AllEvents
事件查看用户何时单击该按钮。 示例:
button.AllEvents += (sender, e) => {
// Do something when the button is clicked
...
};
最后,将按钮添加到视图以显示它:
View.AddSubview (button);
重要
虽然可以分配诸如操作UIButton
的操作TouchUpInside
,但永远不会调用它,因为 Apple TV 没有触摸屏或支持触摸事件。 应始终使用 AllEvents 或 PrimaryActionTriggered 等事件。
设置按钮的样式
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# 代码中创建按钮。 最后,它演示了如何修改按钮的标题并更改其样式和外观。