我編程方式創建一個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,我沒有看到任何關於按鈕的約束。根據定義,當translatesAutoresizingMaskIntoConstraints開啓時,約束將自動生成並添加到superview,在這種情況下,它是myView。
那麼爲什麼這裏沒有約束呢?爲什麼佈局系統仍然知道如何在屏幕上佈置按鈕?
********更新: 我想我知道原因。 當UIView沒有附加任何約束時,佈局系統不會到位。它將使用視圖的框架。 在這種情況下,當我們打開translatesAutoresizingMaskIntoConstraints時,不會生成按鈕的內部約束,因此該按鈕沒有任何約束。所以框架將被使用。 從代碼創建的所有UIView都將translatesAutoresizingMaskIntoConstraints默認爲YES,因此不會爲視圖自動生成約束。該框架將被使用。這對於向後兼容性非常有意義。
你有哪些其他視圖使用自動佈局? – Wain
主視圖從使用AutoLayout的筆尖加載。 – namanhams