こんにちは、コン(@pippi_kon)です。
iPhoneXの画面ではラベル文字がちゃんと表示されていても、iPhone5sなど他の端末では「文字が途中で切れる」「…になる」など、全部表示されないことありませんか?
そこで今回は、『Swiftのラベル(Label)の枠の大きさに合わせて文字の大きさを自動調整する方法』をご紹介します。
どういう現象?
今回問題視している現象はこのようなものです。
左がiPhoneX、右がiPhone5sでの実行結果です。
左側は緑の枠内のLabelという文字列がすべて表示されてますが、右側は「…」となってすべて表示できていません。
なぜ文字が切れるのか
『iPhoneXではラベル文字は全部表示されてるのに、iPhone5sでは文字が途中で切れたり…になったりする』
これは、ラベル枠のサイズが小さくなっているのにラベル文字列のフォントサイズが変わってなくて文字がはみ出してしまうことが原因です。
対処方法
真っ先に思いつくのは端末ごとに文字サイズを設定することですが、アプリ内のすべてのラベルをすべての端末に合わせて設定するのは骨が折れる作業です。
そこで超お手軽簡単にできる方法をご紹介します。
たった1行で書ける魔法のおまじないです。(魔法じゃありません)
label.adjustsFontSizeToFitWidth = true
これがおまじないの全貌です!
ラベルの「adjustsFontSizeToFitWidth」属性にtrueを指定することで、ラベル内の文字列が枠に合わせて自動でリサイズされます。
冒頭の「label」はプログラム内で使用するものに置き換えてください。
@IBOutlet weak var label_test: UILabel! : label_test.adjustsFontSizeToFitWidth = true
こんな感じで!
こちらが上記パラメタ設定後のiPhone5sでの実行結果です。
「Label」が切れずにすべて表示されてますね!
ちなみにUIButtonの場合は以下。
button.titleLabel?.adjustsFontSizeToFitWidth = true
最後に
今回は、『Swiftのラベル(Label)の枠の大きさに合わせて文字の大きさを自動調整する方法』をご紹介しました。
- adjustsFontSizeToFitWidth属性にtrueを指定
複数の端末で文字を正しく表示できるように、このフォントサイズ自動調整機能は使っておいたほうがよさそうです。