【iOS7】UIWebViewの新機能:UIWebPagination


UIWebViewにもいろいろと見慣れないメソッドがiOS7で追加されていたので、使ってみました。

@property (nonatomic) UIWebPaginationMode paginationMode;
@property (nonatomic) UIWebPaginationBreakingMode paginationBreakingMode;
@property (nonatomic) CGFloat pageLength;
@property (nonatomic) CGFloat gapBetweenPages;
@property (nonatomic, readonly) NSUInteger pageCount;

名前から察するに、全体的に Webのページネーション に関する機能追加のようです。

UIWebPaginationMode には次のような値が定義されています。

typedef NS_ENUM(NSInteger, UIWebPaginationMode) {
    UIWebPaginationModeUnpaginated,
    UIWebPaginationModeLeftToRight,
    UIWebPaginationModeTopToBottom,
    UIWebPaginationModeBottomToTop,
    UIWebPaginationModeRightToLeft
};

ドキュメントによると UIWebView のプロパティ paginationMode にはデフォルトで UIWebPaginationModeUnpaginate が入っているとのこと。

paginationMode を変えると何が起きるのか、次のように簡単なアプリをつくって試してみました。

画面下部の UISegmentedControl で paginationMode を切り替えられます。

これで試してみて、「なるほど」と思った部分だけ紹介します。

UIWebPaginationModeLeftToRight

paginationModeUIWebPaginationModeLeftToRight を指定すると、

一見普通だったのが、水平方向にスクロールさせてみると、

なるほど、確かに Left to Right にページネーションされています。

ちなみに、 ロード完了したあとでも paginationMode を変えると表示が更新されます (コンテンツ自体は変わりないので、当たり前ですが)。

pageCount

paginationMode を指定して描画すると pageCount が取れるようになりました。UIPageControl の numberOfPages に渡したりするとよさそうです。

ちなみに上記サンプルで表示しているのは自分のブログですが、26ページでした。

ページングを有効にする

ページネーションしてくれるならページングを有効にしない手はない、ということで

self.webView.scrollView.pagingEnabled = YES;

するといい感じです。

サンプル

iOS7 Sampler』にサンプルコードを追加してあります。

所感

Web漫画とかみるアプリにはいいかもしれません。