LoginSignup
9

More than 5 years have passed since last update.

[iOS]ウィジェットのサイズとレイアウトについて

Posted at

iOS8からToday Extensionという機能が追加されました。
いわゆるウィジェットというものです。
iPhoneの画面上部から下に引っ張った時に出る「今日(Today)」タブにウィジェットを表示することが可能になりました。
自分も東北ずん子メモウィジェットを作るときに若干いじったので、改めてこちらのApple公式のページを参考に調べてみました。
アプリ作ってた当初はまだ英語の公式資料しか無かったのに、いつの間にか日本語訳されたものができていたので読みやすかったです。

ウィジェットの最大サイズ

ウィジェットの最大のサイズは以下の画像の通りです。

iPhone 6Plus

iPhone6Plus.png

iPhone 5s

iPhone5s.png

機種によって画面のサイズは違いますが、画像の赤枠が最大サイズのようです。
画面一枚分のサイズですね。

サイズとレイアウト

preferredContentSize

ウィジェットで利用する画面サイズを指定するときに使います。
型はCGSizeなので使うときはこんな感じ

self.preferredContentSize = CGSizeMake(320, 568)

widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets

ウィジェット画面の上下左右に余白を作るメソッド。
使うときはこんな感じ

func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets {
    let edgeInsets = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
    return edgeInsets
}

このメソッドはTodayViewController(ウィジェットのUIViewController)に採用されているNCWidgetProvidingプロトコルのメソッドなので、メソッドをそのままTodayViewController内に書くことで使えます。

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
9