UIView animation trying to change the frame size doesn't work in iOS 8 but in iOS 7

12,573

Solution 1

You should disable pregenerated constraints. The most simple way is to use autoresizing masks instead of constraints for animating view.

containerView.translatesAutoresizingMaskIntoConstraints = YES;

You can put this code to your -viewDidLoad method or just above [UIView animateWithDuration:...

Solution 2

is autolayout enabled? maybe in iOS 8 some additional constrains are adding during build time

try to call [self.view layoutIfNeeded]; in animatin block, after animation code itself

UPDATE

__block CGRect frame = containerView.frame;
frame.origin.x = 0;
frame.origin.y = 67;
frame.size.height = 643;
frame.size.width = 1024;

[UIView animateWithDuration:0.5 animations:^{

        containerView.frame = frame;
        ...

    }completion:^(BOOL finished) {
        ...
    }];
Share:
12,573
ƒernando Valle
Author by

ƒernando Valle

Android/iOs/web Analyst-Developer who loves UX & UI C, C++, java, javascript, objective C, python... An expert is the person who have committed every error in a determined field.

Updated on June 08, 2022

Comments

  • ƒernando Valle
    ƒernando Valle almost 2 years

    I wanted to resize an UIView, my code works perfect in iOS 7.1 but when I run it in iOS 8 it didn't work properly (I will explain below).

    I have my UIView int the storyboard with values (0,67,511,320), I want to resize to full screen on iPad, so I added the following code:

            [UIView animateWithDuration:0.5 animations:^{
    
                CGRect frame = containerView.frame;
                frame.origin.x = 0;
                frame.origin.y = 67;
                frame.size.height = 643;
                frame.size.width = 1024;
                containerView.frame = frame;
                ...
    
            }completion:^(BOOL finished) {
                ...
            }];
    

    I wanted something like:

     _________________________________
    |           |                     |
    |           |                     |
    |     A     |                     |
    |___________|                     |
    |                                 |
    |                BACKGROUND       |
    |                                 |
    |                                 |
    |_________________________________|
    
                    |
                    V
     _________________________________
    |                                 |
    |                                 |
    |                                 |
    |               A                 |
    |                                 |
    |                                 |
    |                                 |
    |                                 |
    |_________________________________|
    

    But it starts the animation like (0,67,0,0) to (0,67,511,320)

    Any clue about what is happening? Or alternative?