LoginSignup
8
3

More than 5 years have passed since last update.

ざっっくりUIKitまとめ

Posted at

はじめに

勉強会に参加したので備忘のため
内容はiOS開発のベース部分であるUIKitについて

UIView

UIViewの役割

  • サイズを持ち、ツリー構造を表現できる
  • 適切に配置することができる(AutoLayout)
  • UIのイベントに反応できる
  • アニメーションを記述できる

ツリー構造

Viewの中にViewを持つ、といった親子関係を作ることができる
親の変化に応じて子も変化する
Viewも様々な種類がある
ex) UIImageView / UILabel / UIButton / UITableView...
たくさんあるViewの中から用途に適したViewを選び出すことが重要

AutoLayout

ViewとViewとの関係性を定義しておき、アプリ実行時に動的にサイズ、位置が決まる機能
ツリー構造の子から順に計算される
親のViewは子のViewの制約を考慮して自分自身を決める
定義時に矛盾があった場合エラーを出してくれる

UIイベント

後述します

アニメーション

UIView.animate で動きを表現できる

UIViewController

UIViewControllerの役割

  • 様々なViewを所有し、更新を行う
  • 一般的に、Viewで起きるイベントを管理する開始点
  • Viewのライフサイクルを管理する
  • 遷移をコントロールする

様々なViewを所有

ViewControllerは一つのRootViewを持つ
RootView配下のViewの参照を持つことができる
レイアウトの変更(端末の回転など)を元にViewを更新するのもViewController

Viewのライフサイクル

ViewController配下にあるViewの表示に関するライフサイクルを管理する

  • loadView
    • Viewの要素自体を作る
  • viewDidLoad
    • Viewが読み込まれた後に呼ばれる = Viewがあることが保証されている
    • Viewに対して初期的なデータを当てたりスタイルを当てたりする
    • Rxであればここでバインディングすることが多い
  • viewWillAppear
    • Viewが表示されるタイミングで呼ばれる
    • 他のViewControllerから戻ってくる際も呼ばれる
    • 画面に表示されるタイミングで呼ばれると覚えておけば🙆
  • viewDidAppear
    • 遷移のアニメーションが完了したタイミングで呼ばれる
    • 要素のアニメーションを開始したり、例えばチュートリアルのモーダルを出したり
  • viewWillDisappear
    • 他のViewControllerに遷移する際に呼ばれる
  • viewDidDisappear
    • 遷移が完了し完全に見えなくなった際に呼ばれる
    • 動画再生を止めたり、アニメーションを止めたり、必要であればデータを保存したり等

ContainerViewController

  • 複数のViewControllerのコンテンツを1つのユーザーインターフェイスに結合する手段
  • 異なるView間のナビゲーションを容易にする

例:NavigtationController

iOSでよく見る遷移をしてくれる(設定画面で使われてる)
やっていることは子のViewControllerのマネージメントとナビゲーションバーの変更だけ
子のViewControllerのライフサイクルも管理してくれる
NavigationのViewにはあまりアクセスできない

UIApplication

  • あらゆるイベントのハンドリングをする
    • アプリケーションの状態(起動・終了)
    • URLを開くユニバーサルリンク(ディープリンク)
    • メモリ等のシステムの状態に関するイベント
    • これらのイベントのをApplicationDelegateに伝える

UIWindow

  • 表示する先(UIScreen)と表示するもの(UIView)と、そして表示を管理するクラスを(UIViewController)をもっている
  • ソフトウェアキーボードだったりモーダルアラートは別UIWindowとして表示している

UIResponder

  • UIViewやUIApplication等のスーパークラス
  • UIView, UIViewController, UIWindow, UIApplication にイベントを感知する機能がある
  • タッチやモーションを検知してイベントを発生させる

たくさんの種類がサポートされている

  • UITapGestureRecognizer
  • UIPinchGestureRecognizer
  • UIRotaionGestureRecgnizer
  • UISwipeGestureRecognizer
  • UIPanGestureRecognizer
  • UIScreenEdgePanGestureRecognizer
  • UILongPressGestureRecognizer

参考資料

Human Interface Guidelines
View Controller Programming Guide for iOS
Auto Layoutガイド

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3