在 Xamarin 中使用 tvOS 分段控件
分段控件提供一组线性元素,每个元素可以包含一个图标或文本,并用于向用户提供一组相关选项。
Apple 对于使用分段控件提出以下建议:
- 提供充足的空间 - 应注意在其他可聚焦项和分段控件之间提供充足的空间。 单个段在聚焦时(而不是单击时)将被选中,并且当用户实际上想要选择当前段上的另一个可聚焦项时,他们可能会意外更改段。
- 使用拆分视图进行内容筛选 - 分段控件对于内容筛选而言并不是很好的选择,因为拆分视图是为了在内容和筛选器之间轻松导航而设计的。
- 最多限制为七段 - 应尽量将最大段数保持在八 (8) 以下,因为这样可以更轻松地从整个房间的沙发上进行分析,也更易于导航。
- 使用一致的段内容大小 - 所有段都具有相同的宽度,如果可能,应尽量使每个段中的内容保持相同的大小。 这不仅能使分段控件在视觉上更加美观,而且更易于概览。
- 避免混合图标和文本 - 每个单独的段可以包含图标或文本,但不能同时包含两者。 虽然可以在同一个分段控件中混合图标和文本,但应该避免这种情况。
关于段图标
Apple 建议对段图标使用简单、可识别的图像,例如用于搜索的放大镜。 过于复杂的图标在整个房间的电视屏幕上很难识别,因此最好将图标限制为简单的表示形式。
不能在给定的段上混合使用文本和图标,并且应避免在单个分段控件中混合图标和文本。 它应该是全图标或全文本。
段文本
Apple 在使用段文本方面提出了以下建议:
- 使用简短、有意义的名词 - 段标题应清楚地说明用户在选择给定的段时应该预期的内容类型。 例如:音乐或视频。
- 使用标题大小写 - 段标题的每个单词都应大写,但少于四 (4) 个字符的冠词、连词和介词除外。
- 使用简短、突出重点的标题 - 保持标题简短并重点突出选择段时预期的内容类型。
同样,不能在给定的段上混合使用文本和图标,并且应避免在单个分段控件中混合图标和文本。
分段控件和情节提要
在 Xamarin.tvOS 应用中使用分段控件的最简单方法是使用 iOS 设计器将其添加到应用的 UI 中。
有关使用情节提要的详细信息,请参阅你好,tvOS 快速入门指南。
使用分段控件
如前所述,分段控件提供一组线性元素,每个元素可以包含一个图标或文本,并用于向用户提供一组相关选项。
可以通过多种不同的方式在 Xamarin.tvOS 应用中使用分段控件。
作为名称和事件公开
如果在接口设计器中创建了分段控件并将其公开为命名控件和事件,则可以使用以下代码来响应段更改:
partial void PlayerCountChanged (Foundation.NSObject sender) {
// Take action based on the number of players selected
switch(PlayerCount.SelectedSegment) {
case 0:
// Do something if the segment is selected
...
break;
case 1:
// Do something if the segment is selected
...
break;
case 2:
// Do something if the segment is selected
...
break;
}
}
在上面的示例中,分段控件公开为 PlayerCount
名称和 PlayerCountChanged
事件操作。 有关使用操作和容器的详细信息,请参阅你好,tvOS 快速入门指南中的使用容器和操作编写代码部分。
SelectedSegment
属性获取或设置当前选定的段作为从零 (0) 开始的索引。 因此,如果你有五 (5) 个段,则第一个段的索引为零 (0),最后一个段的索引为四 (4)。
修改段
随时可以修改分段控件的数量和内容。 使用以下代码插入新的图标段:
// Icon Segment
SegmentedControl.InsertSegment(UIImage.FromFile("icon.png"), 0, true);
// Text Segment
SegmentedControl.InsertSegment("New Segment", 0, true);
第二个参数定义使用从零 (0) 开始的索引插入段的位置。 如果最后一个参数是 true
,则插入操作会附带动画效果。
若要删除给定的段,请使用以下命令:
SegmentedControl.RemoveSegmentAtIndex(0, true);
或者使用以下命令删除所有段:
SegmentedControl.RemoveAllSegments();
同样,如果最后一个参数是 true
,则删除操作会附带动画效果。 使用 NumberOfSegments
属性返回当前的段数。
若要获取给定段的标题或图标,请使用以下命令:
// Get title
var title = SegmentedControl.TitleAt(0);
// Get icon
var icon = SegmentedControl.ImageAt(0);
若要更改标题或图标,请使用以下命令:
// Set title
SegmentedControl.SetTitle("New Title", 0);
// Set icon
SegmentedControl.SetImage(UIImage.FromFile("icon.png"), 0);
若要查看给定的段是否已启用,请使用以下命令:
if (SegmentedControl.IsEnabled(0)) {
// Do something
...
}
若要启用/禁用给定的段,请使用以下命令:
SegmentedControl.SetEnabled(false, 0);
修改分段控件的外观
可以使用以下代码将给定段的背景更改为图像:
SegmentedControl.SetBackgroundImage (UIImage.FromFile("background.png"), UIControlState.Normal, UIBarMetrics.Default);
其中 UIControlState
指定要为其设置图像的控件的状态:
- 正常
- 已突出显示
- 已禁用
- 已选择
- Focused
UIBarMetrics
指定要用作以下值的指标:
- 默认
- 精简
- DefaultPrompt
- CompactPrompt
此外,可以使用以下方法设置段之间的分隔线:
SegmentedControl.SetDividerImage (UIImage.FromFile("divider.png"), UIControlState.Normal, UIControlState.Normal, UIBarMetrics.Default);
其中第一个 UIControlState
指定分隔线左侧的段的状态,第二个 UIControlState
指定分隔线右侧的段的状态。
总结
本文介绍了 Xamarin.tvOS 应用中的分段控制的设计和使用方法。