何が発信源かわかりませんが、NSAttributedString を使用すると UILabel の高さが可変にならない という記事がちらほら見受けられたので、出来やすよってことを書き記しーます。
開発条件(前提条件)
・Xcode11.5
・Swift5
・Autolaoyut を使用
・UILabel に通常の文字を入力すると、高さが可変になるまでは完成しているとします
コード
さっそく解決するコードを載せます。
1 2 3 4 |
let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineBreakMode = .byCharWrapping self.titleLabel.attributedText = NSAttributedString(string: "テキスト", attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle]) |
以上ッ!笑
コードだけ見ると簡単ですが、ここに辿り着くまでが分かりづれーですよね ( ˘ω˘ 三˘ω˘ )
「NSAttributedString を使うと高さが変わらないのは Apple のバグだ!」って記事も出るくらいなので、本当わかりづらいと思います。笑
NSMutableParagraphStyle で lineBreakMode を設定することが可能で、そこで文字を折り返すようにしています。
これだけで UILabel の高さを可変にすることが可能なので、困っている方はぜひお試しください。
さいごに
UILabel.attributedText も UILabel.text と同じくらい使われると思うので、もう少し使いやすくなってほしいですね。
コメント