読者です 読者をやめる 読者になる 読者になる

しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

UIPageViewControllerで本のようなUIを実現する

UIPageViewControllerというクラスを使うと本をめくるようなUIを実現できます。

f:id:llcc:20160312004309g:plain

使い方

UIPageViewControllerは普通のUIViewControllerのように初期化して使います。

let pageViewController = UIPageViewController(transitionStyle: .PageCurl, navigationOrientation: .Horizontal, options: nil)
let startingViewController = UIViewController()
let viewControllers = [startingViewController]
pageViewController.setViewControllers(viewControllers, direction: .Forward, animated: false, completion: {done in })

pageViewController.delegate = self
pageViewController.dataSource = self

初期化時のtransitionStyleでScrollを選択すれば、ページめくりは本のようなUIではなく普通のスクロールにできます。

let pageViewController = UIPageViewController(transitionStyle: .PageCurl, navigationOrientation: .Horizontal, options: nil)

Datasourceで必須なメソッドは下の2つです。
ここでnilを返せばそのページへは遷移できなくなります。

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
    // ...
}

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
    // ...
}