[iPhone] 画面回転時のLabel位置調整

画面が縦、横に回転したときに表示する文字をちょうどいい場所に置きたい、そんな時はコードで位置を指定すれば簡単に実現できます。
 
広告を常に下に表示させたい場合等に有効です。例えば、画面の下部に “Hello World” を回転しても表示できるようにします。
 
label_position_1b
 
label_position_2b

Swift 3.0
Xcode 8.0

 

sponsored link

CGRect と frame

 
ポイントとしては、

  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.height

let screenHeight = self.view.frame.size.height
のようにして高さを求められます。

willAnimateRotation

 
iOS8以降は回転時の画面の高さと幅は、実際回転した画面の高さと幅となったようです
このケースでは、portrait, landscape の状態を取得する必要なくなりました
 
ただ、回転したことにより位置調整はしますので
 
画面の回転を調べる のページで確認した

 
を使います。
 
最終的なコードは
 
ViewController.swift

 
Objective-C ではこんな感じでした
 
ViewController.m

 
できましたでしょうか