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

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

Swift 4.0
Xcode 9.0.1

 

CGRect と frame

 
ポイントとしては、storyboardを使わないのでUILabelの位置・大きさを決めないといけません。また画面サイズに最適な大きさと縦横を検知する必要があります。

  1. label.frame = CGRect( x:15, y:20, width:160, height:15 )
    • CGRect() を使ってラベルのサイズを含めて位置を決める
  2. view.frame.size.height で画面の高さを検出
  3. willAnimateRotationを使って画面回転を検知
  4. その他として、ラベルのフォント、色設定等を実施

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

 

view.frame.size

 
以下のコードでスクリーンの横幅と高さを求めます。
 

 

willAnimateRotation

 
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


ページのトップへ戻る

シェアする

  • このエントリーをはてなブックマークに追加

フォローする