1

この質問と回答を見て、いくつかのオプションを試しましたが、うまくいきませんでした。

以下のような UIPickerView を作成したいと思います (固定ラベル インチとフィート) が、それらは表示されません:

ここに画像の説明を入力 次のように 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];
}

ピッカーが表示されますが、インチとフィートの固定ラベルはありません。

なにが問題ですか?

4

3 に答える 3

0
  1. この行を移動しviewDidLoadて試してみてください.ラベルは一度追加する必要があります.テキストフィールドが編集を開始したときに常にではありません.

    [self addPickerLabel:@"Feet" rightX:114 top:342 height:21];
    [self addPickerLabel:@"Inches" rightX:241 top:342 height:21];
    
  2. 両方のラベルのフレームをログに記録し、正しく表示されない場合は正しく設定します

    NSLog(@"%@",NSStringFromCGRect(label.frame));
    
于 2013-08-26T10:29:58.677 に答える
0

UIPickerView の高さは 216 ですが、ラベルを高さ 342 に配置しています。これが、ラベルが表示されない理由である可能性があります。

編集:ラベルを作成する行を置き換えてみてください

    [self addPickerLabel:@"Feet" rightX:114 top:98 height:21];
    [self addPickerLabel:@"Inches" rightX:241 top:98 height:21];
于 2013-08-26T10:35:55.337 に答える