介绍
WWDC24 中 UIViewController 增加了 5 种特殊的转场效果zoom
、coverVertical
、flipHorizontal
、crossDissolve
与partialCurl
。但是触发条件仅限于 UIView,WWDC25 将zoom
的触发条件扩展至 UIBarButtonItem。
使用
- 代码。
swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let barButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(barButtonItemClicked))
navigationItem.rightBarButtonItem = barButtonItem
}
@objc func barButtonItemClicked(_ sender: Any) {
let nextViewController = NextViewController()
nextViewController.view.backgroundColor = .systemRed
nextViewController.preferredTransition = .zoom { context in
guard context.zoomedViewController is NextViewController else {
fatalError("Unable to access the current UIViewController.")
}
// iOS26新增,返回触发的UIBarButtonItem
return self.navigationItem.rightBarButtonItem
}
present(nextViewController, animated: true)
}
}
class NextViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .systemGreen
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
dismiss(animated: true)
}
}
- 效果。
