我想顯示一個UILabel
,可能會佔用多行,但我在調整高度方面存在問題。如何防止UILabel填滿整個屏幕?
這裏是什麼樣子時,我有過一個單行文本,正確顯示:
當文本跨越多行但出現這種情況:
這裏的我正在使用的界面生成器設置:
理想情況下,我希望文本視圖保持在屏幕的頂部,只佔用盡可能多的空間,因爲它需要顯示文本,但我真的不能告訴我哪裏出錯了。
我想顯示一個UILabel
,可能會佔用多行,但我在調整高度方面存在問題。如何防止UILabel填滿整個屏幕?
這裏是什麼樣子時,我有過一個單行文本,正確顯示:
當文本跨越多行但出現這種情況:
這裏的我正在使用的界面生成器設置:
理想情況下,我希望文本視圖保持在屏幕的頂部,只佔用盡可能多的空間,因爲它需要顯示文本,但我真的不能告訴我哪裏出錯了。
使用自動佈局處理文本視圖有點棘手。如果可能,請使用UILabel
。如果不是,那麼文本視圖有幾個問題,而最易於管理的解決方案是添加高度約束,然後在代碼中對其進行處理。
文本視圖內容的高度可以被確定爲:
let height = textView.sizeThatFits(textView.frame.size).height
另外,也可以使用
let height = textView.contentSize.height
但有時結果不正確。
您確實需要爲文本視圖設置委託,以便在更改時刷新文本視圖的大小。
那麼你確實已經根據你的約束給予它許可。任何高度> 0,只要它距上邊距20。既然你沒有任何其他的觀點立足你的身高關,你可以掛鉤一個出口到標籤中,並使用此:
@IBOutlet weak var label: UILabel!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
label.sizeToFit()
}
它肯定會工作。
一旦我擁有了該尺寸,我該怎麼做?爲UILabel設置一個新框架什麼也不做。 – spacitron
對不起,這是爲了UITextView。你的問題必須在其他地方。至於這種用法,您需要一個出口到文本視圖的高度約束,並將其常量設置爲檢索高度的值。 –