KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have this view that used to have autoresizingMask = UIViewAutoresizingFlexibleHeight When the status bar would animate its height (like when hanging up a phone call), the view's height would animate and increase. But with auto layout I'm replacing this autoresizingMask with constraints: UIView *orangeView = [[UIView alloc] initWithFrame:CGRectZero]; orangeView.translatesAutoresizingMaskIntoConstraints = NO; orangeView.backgroundColor = [UIColor orangeColor]; [self.view addSubview:orangeView]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[orangeView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(orangeView)]]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(40)-[orangeView]-(190)-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(orangeView)]]; But now, the change in my layout is not animated with the status bar, it's just changed without any animations. Now I know that I should call -layoutIfNeeded in an animation block when using constraints-based layout. But here I'm not the one creating the animation block! So is there a way to animate the change? Does it mean I have to found a place in my code that would be executed during this animation block I didn't initiate? I tried to set [self.view layoutIfNeeded] in my controller when the UIApplicationWillChangeStatusBarFrameNotification is fired, but it doesn't work.
Tags (comma-separated)
Save Edits
Cancel