pushviewcontroller animation is slow/choppy

前端 未结 8 1317
無奈伤痛
無奈伤痛 2020-12-13 00:32

I push a ViewController which contains not too many views, UIScrollView which contains 10 views inside, I have a singleton ViewController

8条回答
  •  既然无缘
    2020-12-13 01:23

    I had a problem where when UIViewController A did a pushViewController to push UIViewController B, the push animation would stop at about 25%, halt, and then slide B in the rest of the way.

    This DID NOT happen on iOS 6, but as soon as I started using iOS 7 as the base SDK in XCode 5, this started happening.

    The fix is that view controller B did not have a backgroundColor set on its root view (the root view is the one that is the value of viewController.view, that you typically set in loadView). Setting a backgroundColor in that root view's initializer fixed the problem.

    I managed to fix this as follows:

    // CASE 1: The root view for a UIViewController subclass that had a halting animation
    
    - (id)initWithFrame:(CGRect)frame
    
    {
    
         if ((self = [super initWithFrame:frame])) {
    
              // Do some initialization ...
    
              // self.backgroundColor was NOT being set
    
              // and animation in pushViewController was slow and stopped at 25% and paused
    
         }
    
         return self;
    
    }
    
    // CASE 2: HERE IS THE FIX
    
    - (id)initWithFrame:(CGRect)frame
    
    {
    
         if ((self = [super initWithFrame:frame])) {
    
              // Do some initialization ...
    
              // Set self.backgroundColor for the fix!
    
              // and animation in pushViewController is no longer slow and and no longer stopped at 25% and paused
    
              self.backgroundColor = [UIColor whiteColor]; // or some other non-clear color
    
         }
    
         return self;
    
    }
    

提交回复
热议问题