在使用UIPickerView顯示時間,城市等的選擇時义矛,系統(tǒng)定義的樣式總是與自己的頁面不搭配需要進行精加工发笔,就給大家介紹一下怎樣自定義UIPickerView選中的字體顏色、字號凉翻、字體等屬性
自定義UIPickerView選中的字體顏色了讨、字號、字體等屬性時需要定義
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view __TVOS_PROHIBITED;方法在此方法中 根據(jù)需要 重寫下面的兩個方法
//重寫 - (nullable NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component __TVOS_PROHIBITED; 方法加載title
/*重寫- (nullable NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED; 方法加載 attributedText*/
具體看實例:(實例以加載三級城市選擇為例)
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
//設(shè)置分割線的顏色
for(UIView *singleLine in pickerView.subviews)
{
if (singleLine.frame.size.height < 1)
{
singleLine.backgroundColor = [UIColor grayColor];
}
}
/*重新定義row 的UILabel*/
UILabel *pickerLabel = (UILabel*)view;
if (!pickerLabel){
pickerLabel = [[UILabel alloc] init];
// Setup label properties - frame, font, colors etc
//adjustsFontSizeToFitWidth property to YES
[pickerLabel setTextColor:[UIColor darkGrayColor]];
pickerLabel.adjustsFontSizeToFitWidth = YES;
[pickerLabel setTextAlignment:NSTextAlignmentCenter];
[pickerLabel setBackgroundColor:[UIColor clearColor]];
[pickerLabel setFont:[UIFont systemFontOfSize:16.0f]];
// [pickerLabel setFont:[UIFont boldSystemFontOfSize:16.0f]];
}
// Fill the label text here
//重寫 - (nullable NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component __TVOS_PROHIBITED; 方法加載title
//pickerLabel.text = [self pickerView:pickerView titleForRow:row forComponent:component];
if(component == 0){
if(row == _firstIndex){
/*選中后的row的字體顏色*/
/*重寫- (nullable NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED; 方法加載 attributedText*/
pickerLabel.attributedText
= [self pickerView:pickerView attributedTitleForRow:_firstIndex forComponent:component];
}else{
pickerLabel.text = [self pickerView:pickerView titleForRow:row forComponent:component];
}
}else if (component == 1){
if(row == _secondIndex){
pickerLabel.attributedText
= [self pickerView:pickerView attributedTitleForRow:_secondIndex forComponent:component];
}else{
pickerLabel.text = [self pickerView:pickerView titleForRow:row forComponent:component];
}
}else if (component == 2){
if(row == _thirdIndex){
pickerLabel.attributedText
= [self pickerView:pickerView attributedTitleForRow:_thirdIndex forComponent:component];
}else{
pickerLabel.text = [self pickerView:pickerView titleForRow:row forComponent:component];
}
}
return pickerLabel;
}
- (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component{
NSString *titleString;
if (component == 0) {
CityModel *md = _dataSource[row];
titleString = md.region_name;
}
else if (component == 1){
CityModel *md = _dataSource[_firstIndex];
_shiArr = md.regionlist;
CityModel *shi = _shiArr[row];
titleString = shi.region_name;
}
else if (component == 2){
CityModel *md = _shiArr[_secondIndex];
_quArr = md.regionlist;
CityModel *qu = _quArr[row];
titleString = qu.region_name;
}
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:titleString];
NSRange range = [titleString rangeOfString:titleString];
[attributedString addAttribute:NSForegroundColorAttributeName value:navBGColor range:range];
return attributedString;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
if (component == 0) {
CityModel *md = _dataSource[row];
return md.region_name;
}
else if (component == 1){
CityModel *md = _dataSource[_firstIndex];
_shiArr = md.regionlist;
CityModel *shi = _shiArr[row];
return shi.region_name;
}
else if (component == 2){
CityModel *md = _shiArr[_secondIndex];
_quArr = md.regionlist;
CityModel *qu = _quArr[row];
return qu.region_name;
}
return nil;
}
效果如下:
自定義選中顏色效果
同時可以根據(jù)上面的思路自定義你需要的樣式