UIPickerView设置选定行的背景颜色(现在也适用于iOS 14)
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我只需要改变选中行的背景颜色。
在iOS 14中,我发现选择器(picker)的选中项现在有一个灰色的背景色,但目前的要求是去除这个背景色。下面的代码似乎可以解决这个问题:
pickerView.subviews[safe:1]?.backgroundColor = UIColor.clear
这里的`safe`是一个操作符,用于进行数组边界检查,在索引无效时返回nil。
我从这里得到了灵感:https://stackoverflow.com/a/53740571/826946
我在这里找到了与我使用的代码几乎相同的内容,你可以给他们点赞:stackoverflow.com/a/30593673/826946 我不确定我从哪个帖子中得到了我的代码。