在 Xamarin 中使用 tvOS 分段控件

分段控件提供一组线性元素,每个元素可以包含一个图标或文本,并用于向用户提供一组相关选项。

示例段控件

Apple 对于使用分段控件提出以下建议:

  • 提供充足的空间 - 应注意在其他可聚焦项和分段控件之间提供充足的空间。 单个段在聚焦时(而不是单击时)将被选中,并且当用户实际上想要选择当前段上的另一个可聚焦项时,他们可能会意外更改段。
  • 使用拆分视图进行内容筛选 - 分段控件对于内容筛选而言并不是很好的选择,因为拆分视图是为了在内容和筛选器之间轻松导航而设计的
  • 最多限制为七段 - 应尽量将最大段数保持在八 (8) 以下,因为这样可以更轻松地从整个房间的沙发上进行分析,也更易于导航
  • 使用一致的段内容大小 - 所有段都具有相同的宽度,如果可能,应尽量使每个段中的内容保持相同的大小。 这不仅能使分段控件在视觉上更加美观,而且更易于概览。
  • 避免混合图标和文本 - 每个单独的段可以包含图标或文本,但不能同时包含两者。 虽然可以在同一个分段控件中混合图标和文本,但应该避免这种情况。

关于段图标

Apple 建议对段图标使用简单、可识别的图像,例如用于搜索的放大镜。 过于复杂的图标在整个房间的电视屏幕上很难识别,因此最好将图标限制为简单的表示形式。

不能在给定的段上混合使用文本和图标,并且应避免在单个分段控件中混合图标和文本。 它应该是全图标或全文本。

段文本

Apple 在使用段文本方面提出了以下建议:

  • 使用简短、有意义的名词 - 段标题应清楚地说明用户在选择给定的段时应该预期的内容类型。 例如:音乐或视频。
  • 使用标题大小写 - 段标题的每个单词都应大写,但少于四 (4) 个字符的冠词、连词和介词除外
  • 使用简短、突出重点的标题 - 保持标题简短并重点突出选择段时预期的内容类型

同样,不能在给定的段上混合使用文本和图标,并且应避免在单个分段控件中混合图标和文本。

分段控件和情节提要

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

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

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

    段控件

  3. 在“Properties Pad”的“小组件选项卡”中,可以调整分段控件的多个属性,例如其“样式”和“状态”

    “小组件”选项卡

  4. 使用“段”字段可以控制控制器中的段数

  5. 从“段下拉列表”中选择给定的段以调整其各个属性(例如标题或图像),并控制在显示控件时是要启用还是选择给定的段

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

    分配名称

  7. 保存所做更改。

有关使用情节提要的详细信息,请参阅你好,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 应用中的分段控制的设计和使用方法。