2016-06-11 50 views
0

我沒有在故事板中定義任何約束,只是拖放了一些文本字段和按鈕。我試圖以編程方式更新它們的大小和位置。我將它們引用IBOutlets並嘗試使用CGRectMake()viewDidLoad()函數中更新它們。根據故事板,我的文本字段和按鈕顯示在位置上。同樣,這些位置是隨機的,我沒有定義任何約束。swift autoLayout覆蓋CGRectMake

有沒有人知道如何解決這個問題,而不禁用autoLayout類?這個項目需要更多的工作。

+0

'viewDidLoad'是操作任何佈局信息的錯誤地方。 – luk2302

+0

'CGRectMake()'只是創建一個包含四個數字的結構。而已。就是這樣。它不會做任何事情。這與你的問題基本無關。據推測,你打算告訴我們的是你正在設置視圖的「邊界」或「框架」屬性。這是相關的。 –

回答

1

如果您將視圖添加到故事板中,則約束條件爲總是定義。如果您不添加它們,它們將在編譯期間自動添加。

如果你真的想要一個觀點沒有約束,矛盾的是,你必須添加它們,然後檢查:

Remove At Build time

每一個約束,你不希望被導出。

然後在代碼中,您將不得不爲每個這樣的視圖設置translatesAutoresizingMaskIntoConstraintstrue,否則它的frame將被忽略。

+0

或者只是,你知道,關閉整個故事板文件的自動佈局。 –

+0

@ ken-thomases這有點激進:)大多數時候你不想完全關閉自動佈局。 – Sulthan

+0

這不是大部分時間。提問者顯然不準備爲這個故事板使用自動佈局。這不是魔術。如果你關掉它,沒有禍害你。如果你不打算使用它,關掉它是一件簡單而正確的事情。按照你的建議去做很多努力來挫敗它,情況會更糟糕。 –