ios - 在 UIViewControllerAnimatedTransitioning 中,“to ViewController”存在视图,但“to View”为 nil
问题描述
我正在学习如何在视图控制器之间创建自定义(交互式)转换。当我想以模态方式呈现某些东西时,我已经创建了设置。演示正在工作,但动画完成后以黑屏结束。
我注意到一些奇怪的事情:
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
let fromV = transitionContext.view(forKey: .from)
let toV = transitionContext.view(forKey: .to)
let fromVC = transitionContext.viewController(forKey: .from)
let toVC = transitionContext.viewController(forKey: .to)
//....
}
正如我所料,fromV
andfromVC.view
引用了相同的视图(在调试器中检查,地址是相同的)。然而toV
,nil
虽然toVC.view
有一些(似乎是)有效视图的有效地址。
这怎么可能?他们不应该总是符合相同的价值观吗?
解决方案
如果您想访问toView
控制器的视图,您将使用
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
if let toVC = transitionContext.viewController(forKey: .to) {
let toView = toVC.view.snapshotView(afterScreenUpdates: true)
}
//rest of code
}
根据文档
此方法非常有效地捕获视图的当前渲染外观并使用它来构建新的快照视图。
希望能帮助到你
推荐阅读
- r - 如何在 Rstudio 中快速插入新的“管道运算符”?
- swift - 自定义 UIDate 选择器
- spring-boot - 对于任何运行时错误,如何停止 IBM MQ 的重试操作?
- entity-framework-core - Entity Framework 删除数据库中的数据集,而不是删除实体之间的链接
- javascript - TypeError:使用 Draft.js 编辑器时 editorState.getCurrentContent 不是函数
- ios - 如何清除 OAuthSwift 库中的 cookie(OAuth2.0)
- sql - SQL Server 搜索查询在选择条件中添加顶部后仅读取有限的行
- api - 如何在邮递员中传递包含斜杠字符的字符串参数?
- java - 从 Java 应用程序调用 https://outlook.office365.com/EWS/Exchange.asmx 时出现随机 SSLHandshakeException
- sql - Oracle SQL 中的变量声明、CTE 和 While 循环