Swift

【Swift4】ラベル枠の大きさに合わせてフォントサイズを自動調整

こんにちは!KON(@pippi_kon)です。

この記事では、Swiftで扱えるラベル(Label)の枠の大きさに合わせて文字の大きさを自動調整する方法を記載します。

 

iPhoneXの画面ではラベル文字がちゃんと表示されていても、iPhone5sなど他の端末では「文字が途中で切れる」「…になる」など全部表示されないことありませんか?

今回は、そのような場合でもラベル文字を全部表示する方法をご紹介します。

バージョン情報

この記事は以下のバージョンで記載しています。

Xcode:9.4

Swift:4.1.2

どういう現象?

今回問題視している現象はこのようなものです。

左がiPhoneX、右がiPhone5sでの実行結果です。

左側は緑の枠内のLabelという文字列がすべて表示されてますが、右側は「…」となってすべて表示できていません。

 

なぜ文字が切れるのか

iPhoneXではラベル文字は全部表示されてるのに、iPhone5sでは文字が途中で切れたり…になったりする。

これは、ラベル枠のサイズが小さくなっているのにラベル文字列のフォントサイズが変わってなくて文字がはみ出してしまうことが原因です。

 


対処方法

真っ先に思いつくのは端末ごとに文字サイズを設定することですが、アプリ内のすべてのラベルをすべての端末に合わせて設定するのは骨が折れる作業です。

そこで超お手軽簡単にできる方法をご紹介します。

たった1行で書ける魔法のおまじないです。(魔法じゃありません)

これがおまじないの全貌です!(ドーン)

ラベルの「adjustsFontSizeToFitWidth」属性にtrueを指定することで、ラベル内の文字列が枠に合わせて自動でリサイズされます。

冒頭の「label」はプログラム内で使用するものに置き換えてください。

こんな感じで!


こちらが上記パラメタ設定後のiPhone5sでの実行結果です。

「Label」が切れずにすべて表示されてますね!

 

ちなみにUIButtonの場合は以下。

 

まとめ

いかがだったでしょうか?

今回は、Swiftで扱えるラベル(Label)の枠の大きさに合わせてフォントサイズを自動調整する方法をご紹介しました。

アプリ開発時はなるべく画面の大きい端末をベースにUI設置し、画面が小さい端末はフォントサイズ自動調整機能を使って対応するのが良さそうです。

少しでもご参考になれば幸いです。