Фиксированные маркировки в панели выбора UIPickerView

33
задан Paras Joshi 6 May 2013 в 11:31
поделиться

6 ответов

Создайте свое средство выбора, создайте маркировку с тенью и продвиньте его к подпредставлению средства выбора ниже представления selectionIndicator.

Это выглядело бы примерно так


UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(135, 93, 80, 30)] autorelease];
label.text = @"Label";
label.font = [UIFont boldSystemFontOfSize:20];
label.backgroundColor = [UIColor clearColor];
label.shadowColor = [UIColor whiteColor];
label.shadowOffset = CGSizeMake (0,1);
[picker insertSubview:label aboveSubview:[picker.subviews objectAtIndex:5]]; 
//When you have multiple components (sections)...
//you will need to find which subview you need to actually get under
//so experiment with that 'objectAtIndex:5'
//
//you can do something like the following to find the view to get on top of
// define @class UIPickerTable;
// NSMutableArray *tables = [[NSMutableArray alloc] init];
// for (id i in picker.subviews) if([i isKindOfClass:[UIPickerTable class]]) [tables addObject:i];
// etc...

- Плата, которую это передает

13
ответ дан 27 November 2019 в 18:36
поделиться

Существует 2 вещи, которые можно сделать:

, Если каждая строка и компонент последовательно являются простым текстом, чем Вы, может просто использовать реализацию UIPickerView по умолчанию как есть, и в Вашем контроллере реализуют следующий UIPickerViewDelegate методы:

  • - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component для отслеживания, которых строка выбрана

  • и возвращает другой текст для выбранной строки в реализации - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

, Если у Вас должно быть что-то другое, чем текст, поскольку дифференциатор для выбранной строки, чем Вы в основном должен создать Ваше собственное CustomPickerView, который происходит из UIPickerView и затем

  • Первая реализация - (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated, и отслеживайте, которых выбрана строка.

  • Затем реализуют - (UIView *)viewForRow:(NSInteger)row forComponent:(NSInteger)component для генерации другого представления для выбранной строки.

образец А для использования UIPickerView или реализации пользовательского UIPickerView доступен в SDK, названном UICatalog.

4
ответ дан 27 November 2019 в 18:36
поделиться

Для воссоздавания рельефного взгляда для маркировок... просто создают изображение с текстом, так, чтобы можно было легко применить очень похожий эффект к тексту... и затем использовать UIImageViews вместо, Маркирует

1
ответ дан 27 November 2019 в 18:36
поделиться

Вместо того, чтобы добавлять маркировку в UIPickerView, просто засуньте его сверху его как одноуровневый элемент, который перекрывает его. Единственная вещь это проблематично, состоит в том, как получить тот же шрифт. Я не знаю, как получить тот рельефный взгляд, но возможно кто-то еще делает, в этом случае, это не действительно проблема вообще.

1
ответ дан 27 November 2019 в 18:36
поделиться

Можно ли показать, где Вы определяете pickerTop и pickerSize?

    CGFloat pickerTop = timePicker.bounds.origin.y;
CGSize pickerSize = timePicker.bounds.size;

, Именно это я имею, но pickerTop, кажется, является неправильным.

микрофон

0
ответ дан 27 November 2019 в 18:36
поделиться
0
ответ дан 27 November 2019 в 18:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: