iOS 27 の「特大ウィジェット」に対応した——systemExtraLargePortrait の使い方と、古い iOS との両立
iOS 27 で、iPhone のホーム画面に置けるウィジェットに4つ目のサイズが加わりました。縦4マス×横6マス……ではなく、横4マス×縦6マス、ちょうどホーム画面1ページ分の大きさです。
Sheet Widget は、Google スプレッドシートの好きな範囲をウィジェットに表示するアプリです。表を表示するアプリにとって、表示できる面積が増えるのはそのまま価値になります。利用者の方から「特大に対応してほしい」という要望もいただいたので、バージョン 1.0.3(2026年9月30日公開)で対応しました。この記事では、そのときに分かったことをまとめます。
iPhone で使うのは systemExtraLargePortrait
WidgetKit には、もともと systemExtraLarge というサイズがあります。名前からするとこれが特大に見えますが、これは iPad と Mac 向けの横長のサイズです。iOS 27 で iPhone に加わった縦長の特大は、別の systemExtraLargePortrait です。
| サイズ | 対象 | 形 |
|---|---|---|
systemSmall / systemMedium / systemLarge |
iPhone・iPad | 小・中・大 |
systemExtraLarge |
iPad・Mac | 横長の特大 |
systemExtraLargePortrait |
iPhone(iOS 27〜) | 縦長の特大(横4×縦6) |
名前が似ているので、iPhone 向けに作るときは指定を取り違えないように注意が必要です。
iOS 26 以前の端末と両立させる
Sheet Widget は iOS 26 以前の端末でも使えるアプリなので、特大は iOS 27 以降のときだけ出す必要があります。ここでは、ウィジェットの側とアプリの側の2か所で分けました。
ウィジェットの側
Sheet Widget は、ウィジェットのサイズごとに別々のウィジェットとして登録しています。特大は、WidgetBundle の中で iOS 27 以降のときだけ登録します。
@main
struct SheetsWidgetBundle: WidgetBundle {
var body: some Widget {
SmallSheetsWidget()
MediumSheetsWidget()
LargeSheetsWidget()
if #available(iOS 27.0, *) {
ExtraLargeSheetsWidget()
}
}
}
特大のウィジェット自体には @available(iOS 27.0, *) を付け、対応サイズに systemExtraLargePortrait だけを指定します。
@available(iOS 27.0, *)
struct ExtraLargeSheetsWidget: Widget {
var body: some WidgetConfiguration {
AppIntentConfiguration(kind: "ExtraLargeSheetsWidget",
intent: ExtraLargeWidgetConfigIntent.self,
provider: ExtraLargeSheetsProvider()) { entry in
SheetsWidgetEntryView(entry: entry)
}
.supportedFamilies([.systemExtraLargePortrait])
}
}
アプリの側
Sheet Widget のアプリでは、どのサイズのウィジェットに表示するかを選んでから、表示する範囲を決めます。ここで iOS 26 の端末に「特大」の選択肢が出てしまうと、作ったのに置けない設定ができてしまいます。
そこで、サイズの一覧を返すところで、iOS 27 未満なら特大を外すようにしました。画面にサイズを並べる場所は、すべてこの一覧を使います。
static var available: [TargetWidgetSize] {
if #available(iOS 27.0, *) { return allCases }
return allCases.filter { $0 != .extraLarge }
}
iOS 26.6 の iPhone 12 で、特大がアプリにもウィジェットの一覧にも出てこないことを確認してから公開しました。
アプリ内のプレビューの大きさ
Sheet Widget のアプリには、ウィジェットがどう見えるかを確認できるプレビューがあります。特大のプレビューの縦横比は、iOS 27 のシミュレータ(iPhone 17)で実際に表示される領域を測って決めました。測った描画域は 341×564pt で、アプリ内では大サイズと同じ横幅(329pt)にそろえて、329×544pt にしています。
ウィジェットの本体は、WidgetKit が渡してくる実際の大きさで描くので、機種ごとに寸法を持つ必要はありません。プレビューだけは自分で大きさを決める必要があるので、比率だけ実測に合わせました。
特大は無料にした
Sheet Widget には有料の Pro プランがありますが、特大ウィジェットは無料で使えるようにしました。新しいサイズに対応しただけで料金を取るより、ホーム画面1ページをまるごと表に使える体験を、まず多くの人に試してもらいたかったからです。
まとめ
- iPhone の特大は
systemExtraLargePortrait。systemExtraLargeは iPad・Mac 用 - ウィジェットは
WidgetBundleの中で#available(iOS 27.0, *)を使って登録を分ける - アプリの設定画面でも、iOS 27 未満では特大を選べないようにする
- プレビューの比率は、実機(またはシミュレータ)の描画域を測って決める
表やグラフのように「広いほどうれしい」内容を表示するウィジェットなら、特大への対応はおすすめです。
Sheet Widget は App Store で公開しています。