中学理科1628254 views
LaTeX959099 views
高校化学2917196 views
小学算数1197561 views
いろは2997386 views
教育149163 views
Computer366393 views
高校物理158886 views
数学講師2867555 views
高校国語786623 views

SwiftのUIPageViewControllerのページめくりのアニメーションを変える

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で設定するほうが簡単になる。

UIPageViewControllerのUIPageViewControllerTransitionStyleでページめくりのアニメーションを変える。アニメーションはUIPageViewControllerを呼び出す側で、transitionStyleを設定する。