设置WKInterfacePicker颜色(文本或大纲)

时间:2016-12-02 02:09:14

标签: ios swift watchkit

有谁知道如何设置WKInterfacePicker的文字颜色或焦点样式轮廓颜色?

我没有看到Interface Builder,我无法在代码中找到可以设置它的任何属性项。

这是IB:

enter image description here

2 个答案:

答案 0 :(得分:5)

您无法更改默认选择器的颜色。

但是你可以操纵视图使其看起来像它而不会减慢应用程序的速度。 enter image description here

我用2 WKInterfaceGroup垂直对齐创建了这个。顶部的群组有自定义标题标签WKInterfaceLabel,下面的群组有WKInterfacePickerWKInterfacePicker配置如下:

Style: List 
Focus Style: None
Indicator: Disabled 

这将隐藏默认色调&标题,以便我们可以创建自定义的标题。

WKInterfaceGroup标签中,我设置了圆角半径和背景颜色。在WKInterfaceGroup for picker中,我设置了一个背景图像,这是一个描边圆角矩形的图像。

我使用pickerDidFocuspickerDidResignFocus回调来更改标签WKInterfaceGroup的背景颜色,以及选择器WKInterfaceGroup的背景图片。

每当索引更改时使用picker action,以更新自定义操作标签。

结果是一个自定义选择器,看起来与内置WKInterfacePicker完全相同,但具有自定义色调。

答案 1 :(得分:1)

实际上,选择的答案对我不起作用(WatchOS 5、6),可能是因为我并排有两个WKInterfacePicker对象。选择器会耗尽周围组中的所有空间,因此背景(颜色或图像)是完全不可见的。

但是,基于@honcheng的答案,我发现了一个“变通方法”,它创建了“自定义颜色”选择指示器。但这看起来与原始版本不完全一样。

  • 创建一个包含WKInterfacePicker对象的WKInterfaceGroup对象。
  • 可选:将此组(及其所在的所有父组)的拐角半径设置为'0'[a]。
  • 在“ awakeWithContext:”中,在WKInterfaceGroup对象上调用“ setContentInset:UIEdgeInsetsMake(1、0、1、0)” [b],然后通过调用“ setBackgroundColor:UIColor.blackColor”将其背景色设置为黑色。 >
  • 在“ pickerDidFocus:”回调中,调用“ setBackgroundColor:UIColor.redColor” [c]以启用焦点指示器。
  • 在“ pickerDidResignFocus:”回调中再次调用“ setBackgroundColor:UIColor.blackColor”以删除焦点指示器。

这就是最终选择指示器的外观

Final result, with 'cornerRadius' set to '0'

[a]:不幸的是,WKInterfacePicker对象本身没有角半径,但是是一个尖锐的矩形,因此,如果您希望有一个完整的矩形作为焦点指示器,则选择器将绘制圆角。为避免这种情况,必须去除拐角半径。我决定改为创建顶部/底部指示器。该图显示了一个小的“毛刺”,拐角半径干扰了焦点指示(线条的左侧)。如上所述,将所有转角半径设置为“ 0”时,可以消除此故障。

[b]:(1、0、1、0)在顶部和底部创建一个像素插入,当然,也可以是一个完整的矩形(1、1、1、1)。

[c]:当然,任何颜色(甚至是背景图像)都是可以的。

“小故障”和“ cornerRadius”未设置为“ 0”

Picker with 'glitch'