4

カスタム UIPickerView を作成しましたが、このように選択した行にスクロールしたときに UILabel の色を変更したいと思います。

UIPickerView

何か案は?

編集: 私がやりたいのは、選択が行われている間、つまり、後でではなく、ホイールが回転している間、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' 変数は、2 番目のコンポーネントで現在選択されている値です。

これがより明確であることを願っています

乾杯

4

1 に答える 1