LaTeX957300 views
高校日本史189857 views
高校生物549842 views
小学算数1194618 views
高校物理158224 views
高校化学2913383 views
小学理科717236 views
高校国語785655 views
雑学1472593 views
世界の国560595 views
Help
Tools

English

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を設定する。