Настройка UIPickerView - PullRequest
4 голосов
/ 07 июня 2010

У меня есть требование, где UIPickerView должен быть настроен. Окно выбора должно выглядеть примерно так:

альтернативный текст http://i45.tinypic.com/2ut565s.png

Приложение, которое настроило pickerView аналогично: http://itunes.apple.com/us/app/convert-the-unit-calculator/id325758140?mt=8

Я попытался удалить панель выбора pickerView по умолчанию, сбросив свойство showsSelectionIndicator UIImagePicker и добавив представление наложения. Но проблема в том, что вид наложения должен быть прозрачным, чтобы колесо позади него было видно. Но другое приложение каким-то образом делает это, хотя панель выбора не прозрачна.

Есть идеи, как этого добиться?

Спасибо и С уважением, Радж

Ответы [ 3 ]

2 голосов
/ 23 апреля 2012

Вот неплохая статья по настройке UIPickerView. http://www.inexika.com/blog/Customizing-UIPickerView-UIDatePicker

1 голос
/ 09 января 2012

Я думаю, что вы можете распечатать подпредставления под средством выбора и изменить их. UIPickerView создает подпредставления после первой загрузки данных. С executeSelecter: WithObject: afterDelay: вы можете удалить их или вставить все, что вам нужно.

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self refreshClock];
    [timePicker_ performSelector:@selector(leakSelf) withObject:nil afterDelay:0];
    [self performSelector:@selector(setupTimePicker) withObject:nil afterDelay:0];
}
- (void)setupTimePicker {
    [[timePicker_ subviewOfClass:NSClassFromString(@"_UIPickerViewTopFrame")] removeFromSuperview];
    CGRect frame = timePicker_.frame;
    frame.size.width += 20;
    frame.origin.x -= 10;
    timePicker_.frame = frame;
}


@implementation UIView(UIViewDebugTool)


- (void)leakSubview:(UIView*)subroot atDepth:(NSUInteger)dep {

    DLog( @"trace sub view[%u] %@", dep, [subroot description] );
    CALayer* layer = subroot.layer;
    for( CALayer* l in layer.sublayers ) {
        DLog( @"layer[%u] %@", dep, l );
    }
    for( UIView* v in subroot.subviews ) {
        [self leakSubview:v atDepth:dep+1];
    }

}

- (void)leakSelf {
    NSUInteger dep = 0;
    [self leakSubview: self atDepth:dep];
}

@end
1 голос
/ 11 августа 2010

Тебе придется написать свой с нуля на этом. UIPickerview не настраивается. В. Все. Отстой, но это так. Я начинал с создания uitableview и наложения рамки вокруг него, и пытался имитировать uipickerview.

...