LoginSignup
47
47

More than 5 years have passed since last update.

【iOS7】UIWebViewの新機能:UIWebPagination

Last updated at Posted at 2014-02-07

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 を変えると何が起きるのか、次のように簡単なアプリをつくって試してみました。

pagination1.jpg

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

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

UIWebPaginationModeLeftToRight

paginationModeUIWebPaginationModeLeftToRight を指定すると、

pagination2.jpg

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

pagination3.jpg

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

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

pageCount

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

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

ページングを有効にする

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

self.webView.scrollView.pagingEnabled = YES;

するといい感じです。

サンプル

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

所感

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

47
47
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
47
47