2016-11-04 4 views
0

構造体にはラベルとテキストフィールドが含まれています。 ラベルのフォントサイズが異なる別のデバイスを適応させる必要があり、テキストフィールドの幅はラベルの幅に応じて柔軟です。以下UITextFiledとUILabelのレイアウトがMasonryで失敗しました

コード:

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); 
    }]; 

それは下の写真のように動作しません。

enter image description here

しかし、私は、ビューでテキストフィールドを交換する場合。できます!

enter image description here

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); 
    }]; 

誰も私を助けることができれば!どんな助けもありがとう。

+0

私はストーリーボードを使用して同じ定数を設定すると、うまくいきます... – Lucifron

+0

コードについてはどうですか?それは動作しますか? – Yan

答えて

0

ラベルには幅が指定されていないため、必要な幅になります。ビューはコンテンツに合わせてサイジングされていないため、別々に動作します。試してテキストフィールドの幅を指定するか、オフセットを付けて右側に固定します。

+0

したがって、幅の制約のないラベルは、それが必要とする幅でなければなりません。ラベルの後ろにテキストフィールドが表示されているが、ビューが表示されているときはそうではないようです。私は 'make.right.equalTo(selectBgView)'のようなテキストフィールドを固定しています。十分ではありませんか?あなたの答えをありがとう。@ Bill Burgess – Yan

関連する問題