* autolayout 의 제약조건을 동적으로 생성하는 방법.
이거 알아내는데 2일 소비함. ㅠㅠ
* scrollview 에 이미지뷰를 동적으로 추가하고
scrollview 의 높이가 변경될때, 그 안의 이미지뷰들도 높이가 자동으로 변하도록 함
이미지뷰의 갯수는 3개로 정함.
* VFL : Visual Format Language. iOS 제약조건을 만들때 사용되는 언어
V : Vertical. 상하. 높이
H : Horizontal. 좌우. 넓이
| : superview 를 뜻함
V:|-(0)-[뷰1]-(10)-| 슈퍼뷰와 뷰1의 위쪽 공간은 0 으로 함. 뷰1과 슈퍼뷰의 아래쪽 공간은 10 으로 함.
H:|-(100)-[뷰1]-(200)-| 슈퍼뷰와 뷰1의 왼쪽은 100 으로 함. 뷰1과 슈퍼뷰의 오른쪽은 200 으로 함.
V:[뷰1(==scrollview)] 뷰1의 높이는 스크롤뷰의 높이와 같게 함.
H:[뷰1(50)] 뷰1의 넓이는 50 으로 함.
float iScrollViewContentW = FRAME_W(svHeader)*3;
svHeader.contentSize = CGSizeMake(iScrollViewContentW, FRAME_H(svHeader));
float iX = 0.0;
for(int i=0; i<4; i++)
{
UIImageView* iv = [[UIImageView alloc] init];
iv.image = [UIImage imageNamed:[NSString stringWithFormat:@"alarm_m1_%d.png", i+1]];
iv.contentMode = UIViewContentModeScaleAspectFit;
iv.translatesAutoresizingMaskIntoConstraints = NO;
[svHeader addSubview:iv];
NSString* sConstraintName = [NSString stringWithFormat:@"iv_%d", i];
NSDictionary* viewsDictionary = @{sConstraintName:iv, @"scrollview":svHeader};
NSString* sConstraintPosV = [NSString stringWithFormat:@"V:|-(0)-[%@]-(0)-|", sConstraintName];
NSString* sConstraintPosH = [NSString stringWithFormat:@"H:|-(%f)-[%@]-(%f)-|", iX, sConstraintName, iScrollViewContentW-iX-FRAME_W(svHeader)];
NSString* sConstraintSizeV = [NSString stringWithFormat:@"V:[%@(==scrollview)]", sConstraintName];
NSString* sConstraintSizeH = [NSString stringWithFormat:@"H:[%@(%f)]", sConstraintName, FRAME_W(svHeader)];
NSArray* constraintPosV = [NSLayoutConstraint constraintsWithVisualFormat:sConstraintPosV
options:0
metrics:nil
views:viewsDictionary];
NSArray* constraintPosH = [NSLayoutConstraint constraintsWithVisualFormat:sConstraintPosH
options:0
metrics:nil
views:viewsDictionary];
NSArray* constraintSizeH = [NSLayoutConstraint constraintsWithVisualFormat:sConstraintSizeH
options:0
metrics:nil
views:viewsDictionary];
NSArray* constraintSizeV = [NSLayoutConstraint constraintsWithVisualFormat:sConstraintSizeV
options:0
metrics:nil
views:viewsDictionary];
[svHeader addConstraints:constraintPosH]; // 좌우 제약조건 생성
[svHeader addConstraints:constraintPosV]; // 상하 제약조건 생성
[svHeader addConstraints:constraintSizeH]; // 넓이 제약조건 생성
[svHeader addConstraints:constraintSizeV]; // 높이 제약조건 생성
iX += FRAME_W(svHeader);
}
'iOS 초보' 카테고리의 다른 글
autolayout 제약조건 애니메이션 (0) | 2015.03.18 |
---|---|
맥, ios, thrift (0) | 2015.03.12 |
iOS xcode6 pch 파일추가 (0) | 2015.02.12 |
NSUserDefaults 초기화 (0) | 2014.10.20 |
xcode, git (0) | 2014.07.02 |