iphone - 你将如何实现 [UIViewController presentModalViewController]?

标签 iphone ios animation uiviewcontroller core-animation

我必须自定义 2 个不同的 UIViewController 之间的转换,为此我想重新实现 [UIViewController presentModalViewController...]。这个函数里面有什么?它是如何工作的?它有什么作用?

非常感谢, 万斯

最佳答案

-[UIViewController presentModalViewController:animated:] 在幕后施展魔法。

对于我的应用程序 Tweet Note,我想通过从架子中 View 的背面动画化新 View 来呈现模态视图 Controller 。或多或少是 iBooks 的功能。我试图覆盖默认实现,但最终在一个多步骤解决方案中完成了它,该解决方案没有丑陋的黑客攻击和警告:

  1. 实例化新的 View Controller 。
  2. 将转换应用于新 View Controller 的托管 View ,以便它从初始位置开始。¨
  3. 开始将 View 动画化到未转换的“正常”位置。
  4. 等待动画结束,作为一个单元做:
    • 从屏幕上删除您刚刚制作动画的 View 。
    • 调用 [self presentModalViewController:vc animated:NO]

最后一步很重要!在您的过渡动画完成后,模态视图 Controller 正常呈现,但没有动画,并且对用户来说就像您进行了适当的动画演示一样。

关闭您的自定义过渡或多或少是做同样的事情,但顺序相反。

关于iphone - 你将如何实现 [UIViewController presentModalViewController]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4693095/

相关文章:

ios - 如何在 Swift 4 中为 UIImage 约束设置动画

iphone - 用于设备特定布局的 Xcode 8 界面构建器

iphone - 使用 C++ 和 sqlite 从 call_history.db 中提取一个表

iphone - iPhone 应用程序上的 Clang 静态分析器显示最新版本的错误

javascript - react "react-transition-group"不起作用

ios - 连接两个 strokeEnd 动画

jquery - 滚动时在 Web 应用程序上触发悬停状态

iOS 动画 2D 游戏

ios - 'NSInvalidUnarchiveOperationException',原因 : 'Could not instantiate class named UIStoryboardPresentationSegueTemplate'

ios - 意外删除 APNS 证书