문제

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의 크기로 늘릴 수있는 것입니다.

귀하의 경우에 뷰 센터 및 센터를 정렬 할 필요가 없습니다.그렇지 않으면 귀하의 질문의 맥락을 제대로 이해하지 못합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top