カスタム UIPickerView を作成しましたが、このように選択した行にスクロールしたときに UILabel の色を変更したいと思います。
何か案は?
編集: 私がやりたいのは、選択が行われている間、つまり、後でではなく、ホイールが回転している間、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 番目のコンポーネントで現在選択されている値です。
これがより明確であることを願っています
乾杯