Uitextfiled и UILabel макет не удалось с кладкой

Структура представляет собой вид с меткой и текстовым полем внутри.
Мне нужно адаптировать другое устройство с различным размером шрифта в метке, и ширина textfield гибка в соответствии с шириной метки.

код ниже:

    UIView *selectBgView = [[UIView alloc] init];
    selectBgView.backgroundColor = [UIColor redColor];
    [condiView addSubview:selectBgView];
    [selectBgView makeConstraints:^(MASConstraintMaker *make) {
        make.width.equalTo(@200);
        make.height.equalTo(@20);
        make.left.equalTo(@10);
        make.top.equalTo(@20);
    }];

    UILabel *label = [[UILabel alloc] init];
    label.backgroundColor = [UIColor grayColor];
    label.font = [UIFont systemFontOfSize:13];
    label.text = @"Type :";
    [condiView addSubview:label];
    [label makeConstraints:^(MASConstraintMaker *make) {
        make.left.top.bottom.equalTo(selectBgView);
    }];

    UITextField * textField = [[UITextField alloc] init];
    textField.borderStyle = UITextBorderStyleRoundedRect;
        textField.font = [UIFont systemFontOfSize:13];
    [condiView addSubview:textField];
    [textField makeConstraints:^(MASConstraintMaker *make) {
        make.right.top.bottom.equalTo(selectBgView);
        make.left.equalTo(label.right);
    }];

Это не работает, как на картинке ниже.

Введите описание изображения здесь

Но при обмене текстовое поле с видом. Это работает!

Введите описание изображения здесь

    UIView *view = [UIView new];
    view.backgroundColor = [UIColor greenColor];
    [condiView addSubview:view];
    [view makeConstraints:^(MASConstraintMaker *make) {
        make.right.top.bottom.equalTo(selectBgView);
        make.left.equalTo(label.right);
    }];

Если бы кто-нибудь мог мне помочь! Любая помощь будет оценена по достоинству.

1 ответ

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