Swift

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

こんにちは、コン(@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を指定

 

複数の端末で文字を正しく表示できるように、このフォントサイズ自動調整機能は使っておいたほうがよさそうです。

初心者向け!Swift入門にオススメの参考書_サムネ
【2020年版】初心者向け!Swift入門にオススメの参考書『Swift初心者にオススメしたいSwiftプログラミング参考書』をご紹介します。...
無料体験あり!初心者におすすめの人気プログラミングスクール3選_サムネ
無料体験あり!初心者におすすめの人気プログラミングスクール3選『プログラミングを学ぶことができる人気のプログラミングスクール』についてご紹介します。...
ABOUT ME
コン
自分のやりたいことでお金を稼げる生活に憧れて脱サラ。 アプリ開発やブログ運営をしながらのんびり暮らしています。