UIPickerView设置选定行的背景颜色(现在也适用于iOS 14)

6 浏览
0 Comments

UIPickerView设置选定行的背景颜色(现在也适用于iOS 14)

我在这里找到了这段代码:这里:\n

- (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"];
    // 这部分只是对所有内容进行了上色,因为你问到了这个。
    [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;
}

\n但是,正如评论中所述,它存在一个问题:\n

\n它只为标签上色,而不是选择器本身。所以,当你滚动到一端或另一端时,会有一个空白的地方,可以看到白色的背景。\n

\n我只需要改变选中行的背景颜色。

0
0 Comments

问题的原因是:在UIPickerView中设置选中行的背景颜色,在iOS 14版本中无法直接实现。

解决方法是:通过子类化UIPickerView,并在layoutSubviews方法中设置选中行的背景颜色。

具体实现代码如下:

class PickerView: UIPickerView {

override func layoutSubviews() {

super.layoutSubviews()

subviews[safe:1]?.backgroundColor = UIColor.clear

}

}

以上就是解决UIPickerView设置选中行背景颜色的问题的方法。

0
0 Comments

在iOS 14中,我发现选择器(picker)的选中项现在有一个灰色的背景色,但目前的要求是去除这个背景色。下面的代码似乎可以解决这个问题:

pickerView.subviews[safe:1]?.backgroundColor = UIColor.clear

这里的`safe`是一个操作符,用于进行数组边界检查,在索引无效时返回nil。

我从这里得到了灵感:https://stackoverflow.com/a/53740571/826946

我在这里找到了与我使用的代码几乎相同的内容,你可以给他们点赞:stackoverflow.com/a/30593673/826946 我不确定我从哪个帖子中得到了我的代码。

0