前提・実現したいこと
NavigationControllerを使った画面遷移のアプリを作っています。
あらゆるスクリーンサイズに対応させるためUILabelの大きさをAutoLayoutによって可変にし、.adjustsFontSizeToFitWidth
を使ってUILabelの幅に合わせてフォントサイズを自動で変更するようにしました。
しかし、.adjustsFontSizeToFitWidth
を使うとUILabelの高さをオーバーしたフォントサイズになってしまいました。
フォントサイズはUILabelの高さ以内にすることを優先したいので.adjustsFontSizeToFitWidth
ではなく、以下のようなコードでUILabelの高さを取得しサイズを変更させようとしました。
該当のソースコード
Swift
1testLabel.font = UIFont(name: "HiraKakuStdN-W8", size: 200) 2testLabel.minimumScaleFactor = 0.1 3let fontSize = testLabel.frame.height * 0.9 4testLabel.font = UIFont(name: "HiraKakuStdN-W8", size: fontSize)
このコードを書く場所によってそれぞれ問題が発生しました。
発生している問題
viewDidLoad()
に書いた場合、フォントサイズは変更されませんでした。再度viewDidLoad()
を実行したときに変更されました。こちらは予想の範囲内です。
viewWillAppear()
に書いた場合、フォントサイズは変更されませんでした。viewを読み込む前なのでこちらも予想の範囲内です。
viewDidAppear()
に書いた場合、フォントサイズはワンテンポ遅れて変更されました。
画面遷移と同時に遅延なくUILabelの高さに合わせてフォントサイズを自動で変更させるにはどうすればよいでしょうか?
ご教授ください。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー