因此,在與 Storyboard 搏斗后,我開始學習 Programmatic UI。
我基本上想出了在哪里可以存盤視圖的代碼,例如按鈕、文本欄位等。
但我的問題是我不想在我的 VC 中看到以下所有約束。
有什么方法可以將所有這些約束存盤在某處,或者每次我想添加約束時撰寫一些函式來呼叫它們?
我知道當我添加更多組件時它會更長......
例如;
func configureTextField() {
self.view.addSubview(usernameTextField)
NSLayoutConstraint.activate([
self.usernameTextField.topAnchor.constraint(equalTo: self.logoImageView.bottomAnchor, constant: 20),
self.usernameTextField.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 40),
self.usernameTextField.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -40),
self.usernameTextField.heightAnchor.constraint(equalToConstant: 50)
])
}
uj5u.com熱心網友回復:
在我看來,您只是在抱怨自動布局約束代碼很冗長。你知道嗎?你是對的!它很冗長。它不像以前那樣冗長,但仍然很冗長。
程式員使用三種解決方案:
利用堆疊視圖。當視圖水平或垂直排列時,您可以使用單個堆疊視圖來排列它們。堆疊視圖是創建約束的視圖。因此,您不必自己創建這些約束(盡管您必須創建、配置和約束堆疊視圖)。
撰寫方便的方法。例如,我們的團隊有類似的方法
addConstrained(subview:top:left:bottom:right:)。我們仍然需要撰寫一大堆約束代碼,但它比你一次寫一個錨要簡單得多,也更短。使用庫。基本上,這只是一個預先存在的便利方法集合。例如,許多人喜歡SnapKit(盡管我個人最不想在我的代碼中添加一層依賴,所以我自己不使用它)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/466099.html
