2013-05-10 3 views
4

Я создал пользовательский UIPickerView, но я хотел бы, чтобы UILabel менял цвет при прокрутке в выбранную строку, как это;UIPickerView Selected Row Label Цвет

UIPickerView

Любые идеи?

Edit: То, что я хотел бы сделать, это изменить цвет UILabel в то время как выбор делается, то есть в то время как колесо вращается, а не после него.

Вот что у меня до сих пор, что изменяет цвет UILabel после того как вы сделали выбор:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 
{ 
    AILabel * pickerRow = view ? (AILabel *)view:[[[AILabel alloc] initWithFrame:CGRectMake(0, 0, 140, 40)] autorelease]; 
    pickerRow.backgroundColor = [UIColor clearColor]; 
    pickerRow.font = [UIFont boldSystemFontOfSize:18.0f]; 
    pickerRow.insets = UIEdgeInsetsMake(0, 10, 0, 0); 

    if(component == 0) 
    { 
     pickerRow.text = [self.numberArray objectAtIndex:row]; 
     if (row == number) 
     { 
      pickerRow.alpha = 0.0f; 
      [UIView animateWithDuration: 0.33f 
            delay: 0.0f 
           options: UIViewAnimationOptionCurveEaseOut 
          animations:^{ 
           pickerRow.textColor = [UIColor whiteColor]; 
           pickerRow.shadowColor = [UIColor blackColor]; 
           pickerRow.shadowOffset = CGSizeMake(0.0f, 1.0f); 
           pickerRow.alpha = 1.0f; 
          } 
          completion:^(BOOL finished){ 
          }]; 
     } 
     else 
     { 
      pickerRow.textColor = [UIColor blackColor]; 
      pickerRow.shadowColor = [UIColor whiteColor]; 
      pickerRow.shadowOffset = CGSizeMake(0.0f, 1.0f); 
     } 
    } 
    else 
    { 
     pickerRow.text = [self.durationArray objectAtIndex:row]; 
     if (row == duration) 
     { 
      pickerRow.alpha = 0.0f; 
      [UIView animateWithDuration: 0.33f 
            delay: 0.0f 
           options: UIViewAnimationOptionCurveEaseOut 
          animations:^{ 
           pickerRow.textColor = [UIColor whiteColor]; 
           pickerRow.shadowColor = [UIColor blackColor]; 
           pickerRow.shadowOffset = CGSizeMake(0.0f, 1.0f); 
           pickerRow.alpha = 1.0f; 
          } 
          completion:^(BOOL finished){ 
          }]; 
     } 
     else 
     { 
      pickerRow.textColor = [UIColor blackColor]; 
      pickerRow.shadowColor = [UIColor whiteColor]; 
      pickerRow.shadowOffset = CGSizeMake(0.0f, 1.0f); 
     } 
    } 

    return pickerRow; 
} 

AILabel просто обычай UILabel, ничего особенного. Переменная 'number' - текущее выбранное значение в первом компоненте. Переменная 'duration' - текущее выбранное значение во втором компоненте.

Надежда это яснее

Приветствия

+0

http://stackoverflow.com/questions/7595220/how-to-change-color-selected-picked-value-from-pickerview –

+0

Whithout любой код, который вам сложно помочь ... –

+0

вставьте свой код, чтобы мы могли вам помочь – user247

ответ

-1
- (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.textColor = [UIColor RedColor]; 
     CGSize rowSize = [pickerView rowSizeForComponent:component]; 
     CGRect labelRect = CGRectMake (0, 0, rowSize.width, rowSize.height); 
     [label setFrame:labelRect]; 

     return label; 
    } 



- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
UILabel *selectedRow = (UILabel *)[pickerView viewForRow:row forComponent:component]; 
     selectedRow.textColor = [UIColor blueColor]; 
}