web-dev-qa-db-ja.com

コンテンツに基づいてtextFieldのサイズを変更する

Swiftで記述されたiOSアプリケーションで自動レイアウトを使用しているときに、コンテンツに基づいてtextFieldのサイズを変更するにはどうすればよいですか?

テキストフィールドは、ビューの読み込み時およびユーザーの入力中に、コンテンツに合わせて必要に応じてサイズ変更されます。

理想的には、テキストフィールドは特定のポイント(たとえば6行)でサイズ変更を停止し、スクロール可能になります。

9
Michael Voccola

UITextViewの代わりにUITextFieldを使用する必要があります。

次に、sizeThatFitsメソッドを使用できます。

ただし、最初に1本の線の高さを知る必要があります。 lineHeightを使用して、その情報を取得できます。

var amountOfLinesToBeShown: CGFloat = 6
var maxHeight: CGFloat = yourTextview.font.lineHeight * amountOfLinesToBeShown

その後、sizeThatFitsメソッド内でviewDidLoadメソッドを呼び出し、maxHeight(line * 6)テキストビューの高さとして:

yourTextview.sizeThatFits(CGSizeMake(yourTextview.frame.size.width, maxHeight))
8
Christian Wörz

Swift

var textView : UITextView!

override func viewDidLoad() {
    super.viewDidLoad()
    textView = UITextView()
    textView.sizeThatFits(CGSize(width: textView.frame.size.width, height: textView.frame.size.height))
}
3
user44776