코드로 오토 레이아웃을 추가 해 주어야 할 경우에는
+(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;
를 추가하여 사용 해 주면 된다.
view1과 view2는 서로 제약조건으로 영향을 주는 뷰 이며 (NSLayoutAttribute )attr1, attr2는 레이아웃 속성이다.
여기서 사용되는 NSLayoutAttribute 경우는 아래와 같은 속성을 사용 할 수 있다.
relation 은 NSLayoutAttribute의 관계를 의미하며 아래와 같은 속성을 사용 할 수 있다.
multiplier 과 constant는 각각 크기의비율과 해당 크기값을 나타낸다.
이를 nib또는 스토리보드상에서 확인하면 아래와 같다.
다음은 해당 코드의 사용 예시이다. ( UiView안에 UITextfield가 있는 경우의 예시)
//높이 지정 ( 뷰의 높이보다 12가 작도록 )
NSLayoutConstraint *textfieldConstraintHeight = [NSLayoutConstraint constraintWithItem:self.textfield attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:self.frame.size.height -12];
// 넓이지정 ( 뷰의 너비가 값도록 )
NSLayoutConstraint *textfieldConstraintWidth = [NSLayoutConstraint constraintWithItem:self.textfield attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:self.frame.size.width];
// textfield에 넓이와 높이를 지정
[self.textfield addConstraints:[NSArray arrayWithObjects:textfieldConstraintHeight, textfieldConstraintWidth,nil]];
// 높이 중앙정렬
NSLayoutConstraint *textfieldConstraintCenterY = [NSLayoutConstraint constraintWithItem:self.textfield attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterY multiplier:1.f constant:0];
// self.textfield를 self와 왼쪽에 거리를 0으로 지정함.
NSLayoutConstraint *textfieldViewConstraintLeadingSpace = [NSLayoutConstraint constraintWithItem:self.textfield attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0];
// self를 self.textfield와 오른쪽에 거리를 0으로 지정함.
NSLayoutConstraint *textfieldViewConstraintTrailingSpace = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.textfield attribute:NSLayoutAttributeTrailing multiplier:1.f constant:0];
// 뷰에 적용
[self addConstraints:[NSArray arrayWithObjects:textfieldViewConstraintLeadingSpace, textfieldViewConstraintTrailingSpace, textfieldConstraintCenterY, nil]];
여기서는 넓이값을 넣게되면 제약조건상 충돌이 일어나기 때문에 실제 사용 시 넓이값은 빼 주어야 한다.
( 넓이 지정이지만 textfield의 크기는 view의 크기만큼 늘어나도록 되어있어 충돌)
위의 코드는 아래와 같이 적용된 코드이다.
'iPhone' 카테고리의 다른 글
iOS 중간 글자 크기, 색상 변경하기 NSMutableAttributedString (0) | 2015.11.30 |
---|---|
코드 비교 프로그램 DiffMerge (0) | 2015.11.24 |
iOS 9.1 in house app 설치 오류 해결 방법 (0) | 2015.10.23 |
iPhone 알림 사용확인 팝업 다시 띄우는 법 (Resetting the Push Notifications Permissions Alert on iOS) (0) | 2015.07.03 |
가로화면에서 상단 상태바(StatusBar)가 보이지 않을 경우 (0) | 2015.06.04 |