[iPhone] UILabel をコードで記述し画面回転時の位置調整をする

UILabelをstoryboardを使わずにコードで記述することもできます。例えば画面が縦、横に回転したときに表示する文字をちょうどいい場所に置きたい場合に有効です。
これはバナー広告を常に下に表示させたい場合等です。
 

Swift 5
Xcode 10.2.1

CGRect UILabel 位置調整

 
storyboardを使わずに動的に調整します。
UILabelの位置・大きさを適宜決めるため画面サイズに最適な大きさと縦横を計算する必要があります。
また、iPhone X系 の場合は SafeAreaの考慮 も必要です。
 

 

CGRect と frame

 
CGRectとframeを使います。

  1. CGRectとframeで先頭位置とサイズ
    • label.frame = CGRect( x:15, y:20, width:160, height:15 )
    • 例えば、(15, 20)の座標から横160、高さ15の矩形エリアをframeとして設定
  2. view.frame.size.height で画面の高さを検出
  3. viewDidAppear を使って画面回転を検知

  4. その他として、ラベルのフォント、色設定等を実施

CGRect で先頭位置とサイズを決めラベルの frame に入れる
その後、テキスト内容を代入してから view に追加することで位置は決められます

 

スクリーンの横幅と高さ

 
view.frame.sizeを使ってスクリーンの横幅と高さを求めます。
 

 

画面回転後の表示サイズ

 
viewDidAppear()を使って画面の回転後の表示サイズを取得します。

iOS8以降は回転時の画面の高さと幅は、実際回転した画面の高さと幅となったようです
このケースでは、portrait, landscape の状態を取得する必要なくなりました
 
ただ、回転したことにより位置調整はしますので画面が変わったら位置を再設定させるようにします。
 

 
を使います。またこれは画面変更で毎回呼ばれます。

 

サンプルコード

 
コードをまとめると
 
ViewController.swift

 

 
この方法では、
– Portrait

 
– landscape Right

 
– landscape Left

 
は可能ですが
– Upside Down

 
ではうまく機能しません
これをするにはMask設定等々が必要になります。あまり使うこともないと思いますので、ここでは煩雑になるので扱いません。
 
 
関連ページ:

References:
UILabel – UIKit | Apple Developer Documentation
UIFont – UIKit | Apple Developer Documentation
UIColor – UIKit | Apple Developer Documentation
frame – UIView | Apple Developer Documentation