更改 NavigationItem 提示时出现奇怪的动画
Posted
技术标签:
【中文标题】更改 NavigationItem 提示时出现奇怪的动画【英文标题】:Weird animations when changing NavigationItem prompt 【发布时间】:2015-05-28 14:07:29 【问题描述】:我在情节提要中添加了这些 ViewController:
没有一个与自定义类相关联,一切都来自纯故事板。
Video on iPhone simulator on ios7
只有在 iOS7 上使用 AutoLayout 时才会发生这种情况。
其他人看到了吗?
Download sample project of problem
【问题讨论】:
你是指标题从viewController中间出来的方式吗? 大部分是带有文字“WTF?”的标签看起来很奇怪 如果您查看我的图片,您会发现我确实使用情节提要添加了标签,并且它正在使用自动布局。在视频中你可以看到我没有添加的奇怪的过渡动画,它只是一个简单的 Show 动作。 我的猜测是视图控制器演示的动画块中捕获了自动布局。 Xcode 8 中仍然会出现这种情况。有人找到解决方案了吗? 【参考方案1】:我认为当视图获取自动布局并将其大小设置为主屏幕大小时会出现此问题。在 iOS 7 中,导航推送动画出现在视图大小设置之前,因此我们可以看到该动画。不用担心它在 iOS 8.0 及更高版本中运行良好。对于 iOS 7.0,您可以在 viewDidLoad 中提供视图大小,以便它可以在出现之前调整大小。
【讨论】:
【参考方案2】:编辑 2:
正如 cmets 中提到的那样,我无法重现您的示例项目的问题。不过,我注意到的一件事是,您的项目配置了 iOS 8.3 的部署目标。以下是解决该问题的步骤:
第 1 步:在 Xcode 的 Project Navigator 中选择您的项目。 第 2 步:确保在项目编辑器的左栏中选择您的项目,而不是目标 第 3 步:选择构建设置选项卡 第 4 步:根据您正在测试的操作系统,将 iOS 部署目标 修改为 iOS 7.1 或 iOS 7.0。 第 5 步:构建并运行。
希望对你有所帮助。
编辑:
步骤 1。选择标签为 14 的 UIViewController
,然后在 Xcode 右侧窗格的第三个选项卡中,输入 Storyboard ID,例如 vc14。
步骤 2。选择标签为 12 的 UIViewController
,然后在同一选项卡中输入自定义类,例如 ViewController
。
第 3 步。从您的 Button 中删除触发 segue 操作并将其替换为 @IBAction
in ViewController
第四步。将此代码添加到您的 @IBAction
中的 ViewController
:
@IBAction func push(sender: AnyObject)
var vc14 = self.storyboard?.instantiateViewControllerWithIdentifier("vc14") as! UIViewController
vc14.view.layoutIfNeeded()
self.navigationController?.pushViewController(vc14, animated: true)
说明:
奇怪的动画正在发生,因为在 segue 将 UIViewController
推送到 UINavigationController
之前从未发生过布局。 iOS 7 没有通过在进入动画块之前手动调用layoutIfNeeded
来适当地防止这种情况发生,当布局最终发生时,它会触发隐式动画。在我给你的代码示例中,我在将ViewController
压入堆栈之前手动触发布局以避免此问题。
【讨论】:
首先,尝试像以前一样更改块内的提示。 我真的不知道F苹果是如何编码的,但感觉写得非常糟糕...... 错误的播放目标只是我错过了,因为我创建该项目只是为了给你们问题,但我忘记将目标设置为 ios 7....... .. 无论如何,它在 ios7 上我遇到了问题,所以只需更改目标即可。 好吧,你的真实项目和有问题的项目之间肯定存在其他差异,因为我似乎无法重现它。您能否确认您使用的是哪个版本的 Xcode 以及 iOS 7 的哪个次要版本。【参考方案3】:我想你按 ⌘T。所以慢动画开始了。检查您使用的所有模拟器。
调试->慢动画
我附上图片检查它。
【讨论】:
这就是我在链接到的视频中所做的。以上是关于更改 NavigationItem 提示时出现奇怪的动画的主要内容,如果未能解决你的问题,请参考以下文章