Как определить UIPickerView центральный ряд при вращении
Из-за недостатка места на экране я пытаюсь отобразить описание (UILabel появляется право на pickerView при вращении) изображения в UIPickerView, когда пользователь вращает колесо. Я использую viewForRow: чтобы обнаружить вращение и показать описание. Проблема в том, что, используя код, который я написал до сих пор, он не может отобразить описание первых 2 строк и последних 2 строк. Вот мой код:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UIImageView *image=[[[UIImageView alloc]initWithImage:[UIImage imageNamed:[zodiacSigns objectAtIndex:row]]]autorelease];
selectedZodiac.frame=CGRectMake(80, 80, 50, 50);
selectedZodiac.hidden=NO;
@try {
//Here -2 is offset of the view in central row
selectedZodiac.text=[zodiacSigns objectAtIndex:row-2];
}
@catch (NSException *exception) {
NSLog(@"Exception caught");
}
@finally {
}
if([yourZodiacPicker selectedRowInComponent:0]!=0)
{
[self.view insertSubview:selectedZodiac aboveSubview:self.view];
}
NSLog(@"reuseView");
return image;
}
Любая помощь будет принята с благодарностью!
2 ответа
Я думаю, что лучшим способом было бы воссоздать PickerView с ScrollView/TableView и соответствующим наложенным изображением, если вам действительно нужна эта функциональность.
Отключите выделение / выделение и прокрутите до ближайшей "ячейки", когда просмотр прокрутки прекратится.
Затем определите ячейку, которая находится в середине экрана. Вы также должны добавить представление до и после содержимого, чтобы пользователь мог переместить первую / последнюю ячейку в середину экрана.
Я мог бы неправильно понять, но если вам нужно отобразить описание изображения, выбранного в данный момент, вы должны реализовать pickerView: didSelectRow: inComponent: и установить там метку описания вместо того, чтобы делать это в viewForRow: forComponent:. Это было бы что-то вроде этого:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
selectedZodiac.frame=CGRectMake(80, 80, 50, 50);
selectedZodiac.hidden=NO;
selectedZodiac.text=[zodiacSigns objectAtIndex:row];
}
Таким образом, вы всегда будете отображать описание выбранной строки выбора.