2016-01-30 81 views
0

我在我的iOS應用中使用PureLayout,並按照此處的說明操作: https://github.com/PureLayout/PureLayout/wiki/Tips-and-Tricks 即,使用名爲didSetupConstraints的標誌和方法updateViewConstraints。 但是現在我想在用戶按下按鈕時在另一個隨機視圖中添加一個視圖。 要做到這一點,我可以想象的唯一方法是創建另一個標誌,如didNewViewSetupConstraints,並在updateViewConstraints中創建另一個塊,其中我使用2個UIView變量創建它們之間的新約束。 是嗎?因爲我認爲對於一件小事來說這是一項很多工作(添加一個子視圖及其約束)。 請注意,如果不安裝它們,我無法創建約束,因爲我事先不知道(用戶會點按它們)。這就是我評論RANDOM的原因。 我在示例代碼10中看到,它使用autoRemoveConstraints和autoInstallConstraints在2組約束之間切換。因爲我的2個視圖是隨機的,我想我不能做那樣的事情,這就是我爲這兩個視圖創建了一個標誌和2個變量來設置updateViewConstraints內的約束的原因。但我相信這太多了。 感謝您的任何建議或想法。如何使用純佈局實時添加隨機視圖

回答

1

你不要創建/激活-updateConstraints內的所有約束。您可以隨時創建約束,只要您希望約束的視圖共享共同的超視圖(換句話說,視圖需要已經添加到相同的視圖層次結構中),就可以激活它們。

我會建議在-updateConstraints之內創建一個默認的靜態約束集。然後,在用戶點擊按鈕的回調方法中,您可以創建此新視圖,將其添加爲子視圖,然後創建&,然後在此處激活新約束。

如果您稍後刪除此視圖,則會自動刪除與其關聯的所有約束。但是,如果您需要調整此新視圖的約束,則可以在創建約束時存儲對約束的單獨引用。

+0

如果您有興趣,可以參閱關於何時何地創建/激活約束條件的更高級概念的討論:https://www.youtube.com/watch?v=taWaW2GzfCI – smileyborg

+0

非常感謝@smileyborg !其實這是我的第一個想法,但我認爲這是錯誤的,因爲我沒有在樣本或文檔中看到。這就是我認爲使用updateConstraints對每個約束都是強制性的原因。 – Ricardo

+0

@Ricardo它不是強制性的,但它總是會在佈局週期的正確時間被調用,在某些情況下它可以更高效,並且它可以幫助您將所有自動佈局代碼集中在一個地方,從而使它更容易推理。查看以前的視頻鏈接以獲得更深入的討論。 – smileyborg

相關問題