iOS学习"/>
iOS学习
UIPickerView默认有一层灰色背景,并且系统不直接提供修改的方法,我们需要手动获取次到那个view图层,并对其进行更改。下面简单来阐述,在代理中实现
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
1、取到选中行背景的图层,修改颜色
获取到middleContainerView,并修改其颜色
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{[self customSelectedRow];//设置文字的属性UILabel *bedTypeLabel = [UILabel new];bedTypeLabel.textAlignment = NSTextAlignmentCenter;bedTypeLabel.text = self.bedTypeArray[row];bedTypeLabel.font = [UIFont systemFontOfSize:20];bedTypeLabel.textColor = [UIColor blackColor];return bedTypeLabel;
}//取到选中行背景的图层,修改颜色
- (void)customSelectedRow {NSArray *subviews = self.pickerVIew.subviews;if (!(subviews.count > 0)) {return;}NSArray *coloms = subviews.firstObject;if (coloms) {NSArray *subviewCache = [coloms valueForKey:@"subviewCache"];if (subviewCache.count > 0) {UIView *middleContainerView = [subviewCache.firstObject valueForKey:@"middleContainerView"];if (middleContainerView) {middleContainerView.backgroundColor = [UIColor whiteColor];}}}
}
2、去除默认的灰色背景
修改pickerView.subviews[1].backgroundColor的颜色,让灰色背景色消失
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{[self customSelectedRow];//设置文字的属性UILabel *bedTypeLabel = [UILabel new];bedTypeLabel.textAlignment = NSTextAlignmentCenter;bedTypeLabel.text = self.bedTypeArray[row];bedTypeLabel.font = [UIFont systemFontOfSize:20];bedTypeLabel.textColor = [UIColor blackColor];if (self.subviews.count > 0) {pickerView.subviews[1].backgroundColor = [UIColor clearColor];// 去除原本的灰色背景}return bedTypeLabel;
}
更多推荐
iOS学习
发布评论