2016-11-04 5 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