更改 UIPicker 的行颜色或行文本颜色
Posted
技术标签:
【中文标题】更改 UIPicker 的行颜色或行文本颜色【英文标题】:Change UIPicker's row color or row text color 【发布时间】:2011-07-20 20:38:52 【问题描述】:我有一个UIPicker
用来打开和关闭图层。我希望能够更改选择器中一行的颜色以指示该图层是否已打开,或者更改文本的字体颜色以指示该图层是否已打开。
如果两者都不可能,我将在返回之前附加 nsstring
在其末尾添加一个 X(因此,如果图层打开,“streets”将变为“streets X”)。我也不知道该怎么做。我知道你可以用数字做这种类型的抛光,但不确定用NSString
。我知道选择器可以显示 27 个字符,所以也许将字符串长度设置为 26,然后将位置 26 的字符设置为 X?但是我不知道如何设置字符串的长度。
对任一路径有什么想法吗?
【问题讨论】:
请添加更多信息。什么语言,框架?至少添加正确的标签。 d'oh,是的,你是对的,对不起。添加标签 【参考方案1】:对于 UIPickerView 中的自定义行,您必须实现 pickerView:viewForRow:forComponent:reusingView:
而不是 pickerView:titleForRow:forComponent:
。
在您的情况下,您只需使用UILabel
作为视图,并更改每行的文本颜色和文本字符串。
假设你只有一个组件:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
UILabel *label;
if (!view) // No view to re-use, create a new one
label = [[UILabel alloc] initWithFrame://your frame here];
else
label = (UILabel*)view;
label.text = // Your row text here
if (//some flag to indicate that this row is selected)
label.textColor = [UIColor redColor];
else
label.textColor = [UIColor blackColor];
return label;
【讨论】:
以上是关于更改 UIPicker 的行颜色或行文本颜色的主要内容,如果未能解决你的问题,请参考以下文章