对于我的uipickerview,我有:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
CGSize size = [pickerView rowSizeForComponent:0];
UILabel *labelMain = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)];
labelMain.backgroundColor = [UIColor clearColor];
labelMain.font = [UIFont fontWithName:kFontSegoeSemiBold size:14];
labelMain.textColor = kColor_default_orangeText;
labelMain.textAlignment = NSTextAlignmentCenter;
int age;
// from
if (pickerView == self.pickerFrom) {
age = minAge + row;
}
// to
else {
age = minAge_pickerTo + row;
}
labelMain.text = [NSString stringWithFormat:@"%d", age];
return labelMain;
}
我知道如何制作蓝色选择指示器(我将uipickerview后面的蓝色视图设置为clearColor。
我需要这个选择器(从/到年龄选择器)(蓝色垂直线仅适用于photoshop):
现在我已经创建了这个选择器:
我有一个问题:
我想在选择指示器(或拾取器视图的中心)中使用白色文本颜色,在拾取器视图的其他区域中使用橙色文本颜色。有可能吗?
答案 0 :(得分:5)
试试这个:
#pragma mark - UIPickerViewDelegate
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
UILabel *label = (UILabel *)[self.yourPickerOutlet viewForRow:row forComponent:component];
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor blueColor];
}
#pragma mark PickerView DataSource
- (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
return [dataSourseArray count];
}
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
NSString* itemString = dataSourseArray[row];
UILabel *label;
if(view==nil){
label = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 310, 30)];
label.textColor = [UIColor blackColor];
label.backgroundColor = [UIColor clearColor];
label.shadowColor = [UIColor whiteColor];
label.shadowOffset = CGSizeMake(0,1);
label.textAlignment = NSTextAlignmentCenter;
}else{
label = (UILabel*) view;
}
label.text = itemString;
return label;
}