我找到了这段代码here:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UILabel *label = (UILabel*) view;
if (label == nil)
{
label = [[UILabel alloc] init];
}
[label setText:@"Whatever"];
// This part just colorizes everything, since you asked about that.
[label setTextColor:[UIColor whiteColor]];
[label setBackgroundColor:[UIColor blackColor]];
CGSize rowSize = [pickerView rowSizeForComponent:component];
CGRect labelRect = CGRectMake (0, 0, rowSize.width, rowSize.height);
[label setFrame:labelRect];
return label;
}
但是,正如评论中所述,它有一个问题:
它使标签着色,但不是拾取器本身。因此,当您滚动到一端或另一端时,会有一个空白点,您可以看到白色背景。
我只需要更改所选行的背景颜色。
答案 0 :(得分:2)
我发现在iOS 14中,选择器的所选项目现在得到了灰色背景色。当前的要求是摆脱这种情况。 所以这似乎可行。
pickerView.subviews[safe:1]?.backgroundColor = UIColor.clear
(“ safe”是一个运算符,它执行数组边界检查,如果索引无效,则返回nil)
我从这里得到了这个主意:https://stackoverflow.com/a/53740571/826946
答案 1 :(得分:0)
我们也可以通过继承 UIPickerView 并将 Andy 的答案放在 layoutSubviews 重写方法中来实现这一点。
class PickerView: UIPickerView {
override func layoutSubviews() {
super.layoutSubviews()
subviews[safe:1]?.backgroundColor = UIColor.clear
}
}