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

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

Swift 5.1
Xcode 11.3.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

一人でアプリ開発の限界を感じたら

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンライン・スクールがいいと思います。


TECH ACADEMY
自宅にいながら1時間でプログラミング基礎を習得

こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン



とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約20,000名の受講生と300社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:


シェアする

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

フォローする