내가 프로그래밍있는 UIButton을 만드는 일이 같은 뷰에 추가하지 않습니다translatesAutoresizingMaskIntoConstraints는
이self.button = [[UIButton alloc] initWithFrame:CGRectMake(20, 20, 100, 30)];
[self.button setTitle:@"Test" forState:UIControlStateNormal];
self.button.translatesAutoresizingMaskIntoConstraints = YES;
[myView addSubview:self.button];
버튼이 제대로 나타나고 translatesAutoresizingMaskIntoConstraints이기 때문에이 올바른지 고유의 크기를 (사용하지 않습니다 에). 그러나, myView.constraints 인쇄 할 때 단추에 관한 제한이 표시되지 않습니다. 정의에 따라 TranslateAutoresizingMaskIntoConstraints가 켜져 있으면 제약 조건이 자동으로 생성되어이 경우 myView 인 수퍼 뷰에 추가됩니다.
여기서 제약이 생성되지 않는 이유는 무엇입니까? 그리고 왜 레이아웃 시스템은 여전히 화면에 버튼을 레이아웃하는 방법을 알고 있습니까?
******** 업데이트 : 나는 이유를 알고 있다고 생각합니다. UIView에 제약 조건이 연결되어 있지 않으면 레이아웃 시스템이 제대로 작동하지 않습니다. 뷰 프레임을 사용합니다. 이 경우 translatesAutoresizingMaskIntoConstraints를 켜면 버튼의 본질적인 제약 조건이 생성되지 않으므로 버튼에 제약 조건이 없습니다. 따라서 프레임이 사용됩니다. 코드에서 생성 된 모든 UIView는 translatesAutoresizingMaskIntoConstraints의 기본값이 YES이므로 뷰에 대한 제약 조건이 자동으로 생성되지 않습니다. 프레임이 사용됩니다. 그것은 이전 버전과의 호환성을 위해 완벽합니다.
translatesAutoresizingMaskIntoConstraints = YES
경우, 뷰의 슈퍼 뷰는 뷰의 자동 크기 마스크에 보이는 그것을 구현 제약을 생산, 자체합니다 (수퍼)에 그 제약 조건을 추가합니다 다음과 같이
autolayout을 사용하고있는 다른보기가 있습니까? – Wain
기본보기는 AutoLayout을 사용하는 nib에서로드됩니다. – namanhams