iOS AutoLayout Visual Format - Alignment.
-
12-12-2019 - |
문제
iOS6에서는 autolayouts를 사용하고 있습니다.
- 프로그래밍 방식으로 2 뷰 V1 및 V2가 생성됩니다.
- v2는 v1 의 하위보기로 추가됩니다.
- v1의 제약 조건은 이미 프로그래밍 방식으로 생성되었습니다 (여기에 표시되지 않음).
- v1 및 v2가 동일한 크기의 것으로 생각하고 v2가 V2가 V1 맨 위에 정확히 정확히 일치하는 수평 및 수직 센터 일치를 정확히 V1 위에 놓아주는 것과 같습니다.
질문 :
- 어떻게 이것을 달성 할 수 있습니다 (시각적 형식을 사용하는 것이 바람직하지 않으면 대체 접근법을 제안 할 수 있음)
코드 - 아래에는 나의 시도가 있지만 원하는 출력을 제공하지는 않습니다.- 오류가 발생하지 않습니다.v1이 올바르게 배치되지만 v2는 v1
의 왼쪽 모서리입니다.메모 - 저는 아래의 설명에서 아래에서 설명했습니다.
[v1 addSubView:v2];
v1.translatesAutoresizingMaskIntoConstraints = NO;
v2.translatesAutoresizingMaskIntoConstraints = NO;
NSDictionary *viewDictionary = NSDictionaryOfVariableBindings(v1,
v2);
//I wanted v1 and v2 to be of the same height and wanted the center Y to be aligned together
NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[v2(==v1)]"
options:NSLayoutFormatAlignAllCenterY
metrics:nil
views:viewDictionary];
//I wanted v1 and v2 to be of the same height and wanted the center X to be aligned together
NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[v2(==v1)]"
options:NSLayoutFormatAlignAllCenterX
metrics:nil
views:viewDictionary];
[v1 addConstraints:horizontalConstraints];
[v1 addConstraints:verticalConstraints];
. 해결책
이 작업 만해서는 안됩니다.
NSMutableArray *constraints = [NSMutableArray new];
constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"|[v2]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(v2)];
constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[v2]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(v2)];
[v1 addConstraints:constraints];
.
이는 v2가 높이와 너비를 versiview의 크기로 늘릴 수있는 것입니다.
귀하의 경우에 뷰 센터 및 센터를 정렬 할 필요가 없습니다.그렇지 않으면 귀하의 질문의 맥락을 제대로 이해하지 못합니다.
제휴하지 않습니다 StackOverflow