酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

SwiftでToday Extensionの高さをUITableViewの高さに合わせる

preferredContentSizeでサイズを設定します。

let extensionHeight: CGFloat = 300
self.preferredContentSize = CGSizeMake(0, extensionHeight)

Today ExtensionでもUITableViewを使うことができます。

ただし、Today Extensionではスクロールしてはいけない(縦横にスクロールする通知センター上に表示されるWidgetだから)ので、UITableViewのサイズをToday Extensionに合わせることでスクロールしないTableViewにしてしまうことができます。

UITableViewの中身のサイズはUITableView#contentSizeで取得することができます。

let extensionHeight: CGFloat = self.tableView.contentSize.height
self.preferredContentSize = CGSizeMake(0, extensionHeight)

ドキュメントに書いてなかったと思うけれど、おそらくToday Extensionの高さの上限値は「アプリ名のセクションを含めてWidgetが1画面で収まる高さ」だと思います。