2013-08-26 2 views
1

Я видел this question and answer, и я попробовал несколько вариантов, но не работал.Добавить фиксированный UILabel в UIPickerView

Я хотел бы создать UIPickerView, как показано ниже, (фиксированные метки дюймов и ноги), но те не отображались:

enter image description here Я создаю UIImagePicker так:

- (void)viewDidLoad 
{ 
    _picker = [[UIPickerView alloc] init]; 
    CGRect pickerFrame = CGRectMake(0, 0, 200, 216); 
    pickerView.frame = pickerFrame; 
    pickerView.userInteractionEnabled = YES; 
    pickerView.dataSource = self; 
    pickerView.hidden = YES; 
    pickerView.delegate = self; 
    pickerView.showsSelectionIndicator = YES; 
    [self.view addSubview:pickerView]; 
    [textField setInputView:pickerView]; 
    textField.delegate = self; 

    [pickerView removeFromSuperview]; 
    _picker.hidden = YES; 
} 


- (BOOL) textFieldShouldBeginEditing:(UITextView *)textView 
{ 
    if (textView.tag==1){ //field for the uipickerview 
     _picker.hidden = NO; 
     [self addPickerLabel:@"Feet" rightX:114 top:342 height:21]; 
     [self addPickerLabel:@"Inches" rightX:241 top:342 height:21]; 
    } 
    return YES; 
} 

- (void)addPickerLabel:(NSString *)labelString rightX:(CGFloat)rightX top:(CGFloat)top height:(CGFloat)height { 
#define PICKER_LABEL_FONT_SIZE 18 
#define PICKER_LABEL_ALPHA 0.7 
    UIFont *font = [UIFont boldSystemFontOfSize:PICKER_LABEL_FONT_SIZE]; 
    CGFloat x = rightX - [labelString sizeWithFont:font].width; 

    // White label 1 pixel below, to simulate embossing. 
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x, top + 1, rightX, height)]; 
    label.text = labelString; 
    label.font = font; 
    label.textColor = [UIColor whiteColor]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.opaque = NO; 
    label.alpha = PICKER_LABEL_ALPHA; 
    [_picker addSubview:label]; 


    // Actual label. 
    label = [[UILabel alloc] initWithFrame:CGRectMake(x, top, rightX, height)]; 
    label.text = labelString; 
    label.font = font; 
    label.textColor = [UIColor blackColor]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.opaque = NO; 
    label.alpha = PICKER_LABEL_ALPHA; 
    [_picker addSubview:label]; 
} 

Появляется сборщик, но без фиксированных меток дюймов и футов.

Что не так?

ответ

0

Я использовал уже внедренную большой компонент:

https://github.com/brunow/ActionSheetPicker2

который обеспечивает многоколоночном вид сборщика, и я просто изменил текст и количество столбцов

+0

use 'ActionSheetPicker-3.0', '~> 1.3.10' http://skywinder.github.io/ActionSheetPicker-3.0 – Ted

+0

возможно - я написал этот ответ 1,5 года назад :), но спасибо – Dejell

0
  1. Переместить эти строки в viewDidLoad и попробовать it.Labels должны быть добавлены once.Not всегда, когда текстовое поле было начать редактирование

    [self addPickerLabel:@"Feet" rightX:114 top:342 height:21]; 
    [self addPickerLabel:@"Inches" rightX:241 top:342 height:21]; 
    
  2. Войти рамку как этикетки и установить его правильно если он появляется неправильно

    NSLog(@"%@",NSStringFromCGRect(label.frame)); 
    
+0

Я пробовал. Тем не менее я их не вижу – Dejell

+0

Отметьте 2 и посмотри результат –

+0

{{183, 343}, {241, 21}} {{183, 342}, {241, 21}} – Dejell

0

Ваш UIPickerView имеет Hei ght из 216, но вы помещаете метки высотой 342. Это может быть причина, по которой вы не можете их видеть.

Edit: Попробуйте заменить строки, где вы делаете ярлыки

[self addPickerLabel:@"Feet" rightX:114 top:98 height:21]; 
    [self addPickerLabel:@"Inches" rightX:241 top:98 height:21]; 
+0

Мой рост 21! – Dejell

+0

CGRect pickerFrame = CGRectMake (0, 0, 200, 216); Очевидно, что кадр pickerView равен 216. Ваши ярлыки просто выходят за рамки их супервизора. – johnyu

+0

Я попробовал отредактированный код [self addPickerLabel: @ «Feet» rightX: 114 top: 98 height: 21]; [self addPickerLabel: @ "Дюймы" rightX: 241 top: 98 height: 21]; но это не помогло бы – Dejell

Смежные вопросы