iOS26适配指南之UIViewController

介绍

WWDC24 中 UIViewController 增加了 5 种特殊的转场效果zoomcoverVerticalflipHorizontalcrossDissolvepartialCurl。但是触发条件仅限于 UIView,WWDC25 将zoom的触发条件扩展至 UIBarButtonItem。

使用

  • 代码。
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)
    }
}
  • 效果。
zoom.gif
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Xcode 16 新特性 在 WWDC24 上 Apple 推出了 Xcode 16,相比较 Xcode 15,它...
    YungFan阅读 4,776评论 2 9
  • Xcode 26 新特性 界面 项目 安装包更小,其他组件与工具链只有在需要时才会下载。 设置界面重新设计,菜单从...
    YungFan阅读 687评论 0 2
  • /* UIViewController is a generic controller base class th...
    DanDanC阅读 1,898评论 0 2
  • 1.尺寸适配1.原因 iOS7中所有导航栏都为半透明,导航栏(height=44)和状态栏(height=20)不...
    LZM轮回阅读 6,190评论 1 4
  • 大部分人缺乏一种主动发掘信息的意识。读着别人写好的文字,思考着别人提出的问题,做着别人交代的事情。 https:/...
    士梦阅读 1,215评论 0 4