Weird animations when changing NavigationItem prompt

前端 未结 3 1395
[愿得一人]
[愿得一人] 2021-02-19 21:49

I have these ViewControllers added in storyboard:

\"enter

None is connected with a

3条回答
  •  再見小時候
    2021-02-19 22:21

    Edit 2:

    As someone mentionned in the comments, I am unable to reproduce the problem with your sample project. One thing I noticed though, is that your project is configured with a deployment target that is iOS 8.3. Here are the steps to fix that :

    Step 1: Select your project in Xcode's Project Navigator. Step 2: Make sure you select your project in the left column of the project editor and not the target Step 3: Select the Build Settings tab Step 4: Modify the iOS Deployment Target to iOS 7.1 or iOS 7.0 depending on which OS you are testing with. Step 5: Build and run.

    Hopefully this will help you out.

    Edit:

    Step1. Select your UIViewController with the label 14 and in the third tab of the right pane of Xcode, enter a Storyboard ID such as vc14.

    Step2. Select your UIViewController with the label 12 and in the same tab, enter a custom class such as ViewController.

    Step3. Remove the trigger segue action from your Button and replace it by a @IBAction in ViewController

    Step4. Add this code to your @IBAction in ViewController :

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

    Explanation:

    The weird animation is occurring because layout has never occurred before the segue pushes the UIViewController in the UINavigationController. iOS 7 didn't protect appropriately against such a scenario by manually calling layoutIfNeeded before entering an animation block and when the layout finally occurs, it triggers implicit animations. In the code sample I have given you, I manually trigger layout before pushing the ViewController on the stack in order to avoid this issue.

提交回复
热议问题