改变NavigationItem提示时奇怪的animation

我有这些ViewControllers添加在故事板:

在这里输入图像说明

没有一个与自定义类相关,一切都来自纯故事板。

iOS7上iPhone模拟器上的video

这只在iOS7上使用AutoLayout时发生。

其他人看到这个?

下载问题的示例项目

我认为这个问题发生在视图获取自动布局并将其大小设置为主屏幕大小时。 在ios7导航中,推动animation在视图大小设置之前会出现,因此我们可以看到animation。 不要担心它在ios8.0及更高版本中运行良好。 对于ios 7.0,您可以在viewDidLoad中添加视图大小,以便在出现之前resize。

编辑2:

正如有人在评论中提到的,我无法重现与您的示例项目的问题。 我注意到的一件事是,您的项目configuration了一个iOS 8.3的部署目标。 以下是解决这个问题的步骤:

第1步:在Xcode的Project Navigator中select你的项目。 步骤2:确保在项目编辑器的左栏中select项目,而不是目标步骤3:select“构build设置”选项卡步骤4:根据您正在testing的操作系统将iOS部署目标修改为iOS 7.1iOS 7.0用。 第5步:构build并运行。

希望这会帮助你。

编辑:

步骤1。 select标签为14的UIViewController ,在Xcode的右侧窗格的第三个标签中,input一个Storyboard ID,例如vc14。

第2步。 select你的UIViewController标签12,并在同一个标​​签中,input一个自定义的类,如ViewController

第三步。 从您的Button中删除触发器segue动作,并将其replace为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) } 

说明:

奇怪的animation发生,因为布局从未发生在segue推UINavigationControllerUIViewController之前。 在进入animation块之前手动调用layoutIfNeeded ,并且当布局最终出现时,iOS 7没有适当地保护这种情况,它会触发隐式animation。 在我给你的代码示例中,为了避免这个问题,我在将堆栈中的ViewController推送之前手动触发布局。

我想你按⌘T。 所以Slowanimation是开始的。 检查您使用的所有模拟器。

debugging – >慢animation

我附上Image检查它。 见图