SwiftのUIPageViewControllerは、ページをめくるときのアニメーションが設定されている。デフォルトはpageCurlで、他にscrollがある。Swift 4ではこの2つが用意されている。
ページめくりのアニメーションを変えるときは、そのUIPageViewControllerのinitをoverrideする。initの引数にあるtransitionStyleがポイント。
コード
以下はYourViewControllerというUIPageViewControllerのページめくりのアニメーションを変えるコードである。
YourViewController:
override init(transitionStyle style: UIPageViewControllerTransitionStyle, navigationOrientation: UIPageViewControllerNavigationOrientation, options: [String : Any]? = nil) {
super.init(transitionStyle: style, navigationOrientation: navigationOrientation, options: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
このUIPageViewControllerを呼び出すとき
YourViewControllerを呼び出す側:
let v = YourViewController(transitionStyle: UIPageViewControllerTransitionStyle.scroll, navigationOrientation: UIPageViewControllerNavigationOrientation.horizontal, options: nil)
とする。
ポイント
YourViewControllerのinitの引数であるtransitionStyleを、呼び出し側でUIPageViewControllerTransitionStyle.scrollにしている。
注意
YourViewControllerの中でもアニメーションを決定できる(Swift 4、2018年8月最新)。つまりoverride initの中で、transitionStyleを定義してsuper.initのtransitionStyleに入れても、ページめくりのアニメーションは変更される。
override init(transitionStyle style: UIPageViewControllerTransitionStyle, navigationOrientation: UIPageViewControllerNavigationOrientation, options: [String : Any]? = nil) {
let t: UIPageViewControllerTransitionStyle = UIPageViewControllerTransitionStyle.pageCurl
super.init(transitionStyle: t, navigationOrientation: navigationOrientation, options: nil)
}
呼び出し側でtransitionStyleを設定せず、YourViewControllerのinitで設定するほうが簡単になる。