更改NavigationItem提示时出现奇怪的动画

12

你是指标题从viewController的中间出现的方式吗? - Woodstock
大部分是带有文本“WTF?”的标签。看起来很奇怪。 - Arbitur
如果您查看我的图像,您可以看到我使用Storyboard添加了标签,并且它正在使用自动布局。在视频中,您可以看到奇怪的过渡动画,这不是我添加的,只是一个简单的Show操作。 - Arbitur
我猜测autolayout在viewController呈现的动画块中被卡住了。 - Woodstock
1
这个问题在Xcode 8中仍然存在。有人找到了解决方案吗? - Nick Kohrn
显示剩余6条评论
3个回答

4

我认为这个问题是在视图自动布局并将其大小设置为主屏幕大小时发生的。在iOS 7中,导航推送动画在视图大小设置之前进行,因此我们可以看到动画效果。不用担心,在iOS 8.0及更高版本中,它能正常工作。对于iOS 7.0,您可以在viewDidLoad中提供视图大小,以便在出现之前调整大小。


3

编辑2:

正如评论中提到的那样,我无法重现您的示例项目中的问题。但我注意到,您的项目配置了一个部署目标iOS 8.3。以下是解决方法的步骤:

步骤1:在Xcode的项目导航器中选择您的项目。 步骤2:确保您在项目编辑器的左列中选择了您的项目而不是目标。 步骤3:选择“Build Settings”选项卡。 步骤4:将iOS Deployment Target修改为iOS 7.1iOS 7.0,具体取决于您要测试的操作系统版本。 步骤5:构建并运行。

希望这可以帮助您。

编辑:

步骤1:选择带有标签14的UIViewController,在Xcode右侧窗格的第三个选项卡中输入Storyboard ID,例如vc14。

步骤2:选择带有标签12的UIViewController,在相同的选项卡中输入自定义类,例如ViewController

步骤3:从按钮中删除触发的segue动作,并用ViewController中的@IBAction替换它。

步骤4:将以下代码添加到ViewController中的@IBAction

@IBAction func push(sender: AnyObject) {
    var vc14 = self.storyboard?.instantiateViewControllerWithIdentifier("vc14") as! UIViewController
    vc14.view.layoutIfNeeded()
    self.navigationController?.pushViewController(vc14, animated: true)
}

解释:

奇怪的动画出现是因为在切换UIViewControllerUINavigationController之前没有进行布局。iOS 7没有适当地防护这种情况,即在进入动画块之前手动调用layoutIfNeeded,并且当布局最终发生时,它会触发隐式动画。 在我给您提供的代码示例中,我会在将ViewController推入堆栈之前手动触发布局,以避免此问题。


首先,尝试以与您之前相同的方式更改块内的提示。 - Dalzhim
我真的不知道这个苹果是怎么编写的,但感觉写得非常糟糕... - Arbitur
错误的部署目标只是我的疏忽,因为我创建了该项目只是为了向大家展示问题,但我忘记将目标设置为iOS 7。无论如何,它现在已经在iOS 7上出现问题了,所以请更改目标。 - Arbitur
好的,那么您的真实项目和存在问题的项目之间必须存在其他差异,因为我似乎无法重现它。您能否确认您正在使用哪个版本的Xcode以及iOS 7的哪个小版本? - Dalzhim

0

我想你按了⌘T键,所以慢动画开始了。检查你使用的所有模拟器。

调试->慢动画

我附上了图片,请查看。 查看图片


这就是我在链接视频中所做的。 - Arbitur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接