入力した文字数によって、Labelの大きさをリサイズできるようにしたいです。
Labelの1行内に収まればそのまま表示され、
1行以内に収まらなければ改行して次の行に表示されるようにです。
簡単にいうと、Labelで文字列をLINEのメッセージのように表示したいのです。
そこで、Labelを動的に変更するには、
- 本文
- フォント
- 行数
- lineBreakMode
- sizeToFit
をlabelのプロパティに設定する必要があると知り、実装してみました。
↓
https://youtu.be/60YH9sgAlUA
ただ、Labelを動的に可変することはできたのですが、Labelに表示されている文字列よりも少ない文字数の文字列をLabelに設定すると、それ以降、Labelの幅が固定されてしまいます。
具体的に言うと、
0. Label.textの1行には6文字しか入らない
0. ”ああああああああああああ”と入力すると”ああああああ ああああああ”と区切って表示される
0. ”ああああ”と入力すると、1行で”ああああ”と表示される
0. ”ああああああああ”と入力すると、”ああああ ああああ”と表示される
次に入力する文字列がその前に入力した文字列よりも文字数が大きければ動的に可変してくれますが、小さければ、なぜかそれ以降に長い文字列を入力しても、行の長さが固定されてしまい、動的に可変されなくなるのです。
過去のコードで何か問題があれば、ご指摘願います。
※追記
※追記2
swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var label: UILabel! 6 @IBOutlet weak var textField: UITextField! 7 8 @IBAction func button(_ sender: UIButton) { 9 label.text = textField.text! 10 label.font = UIFont(name: "HiraKakuProN-W3", size: 18) 11 label.numberOfLines = 0 12 label.lineBreakMode = .byCharWrapping 13 // label.textAlignment = .center 14 label.sizeToFit() 15 } 16 17 @IBAction func button1(_ sender: Any) { 18 label.text = "1000" 19 label.font = UIFont(name: "HiraKakuProN-W3", size: 18) 20 label.numberOfLines = 0 21 label.lineBreakMode = .byCharWrapping 22// label.textAlignment = .center 23 label.sizeToFit() 24 } 25 26 @IBAction func button2(_ sender: Any) { 27 label.text = "10000000000000000" 28 label.font = UIFont(name: "HiraKakuProN-W3", size: 18) 29 label.numberOfLines = 0 30 label.lineBreakMode = .byCharWrapping 31// label.textAlignment = .center 32 label.sizeToFit() 33 } 34 35 @IBAction func button3(_ sender: Any) { 36 label.text = "gh;lajl;kajklsdfjlgbalgjaghojg;jlahgawjg;lakwgdbgkasglasbgaewjgw;aegjawelkgbawegdghsdmgbasjgasljfasfnsdlkfndsafmalsf" 37 label.font = UIFont(name: "HiraKakuProN-W3", size: 18) 38 label.numberOfLines = 0 39 label.lineBreakMode = .byCharWrapping 40// label.textAlignment = .center 41 label.sizeToFit() 42 } 43 44} 45

回答1件
あなたの回答
tips
プレビュー