I am trying to animate up some views so that they are blocked by the giant keyboard in landscape. It works well if I simply animate the frames, but others have suggested that this is counter-productive and I should be updating the NSLayoutConstraints instead. However, they don’t seem to be animatable. Has anyone gotten them to work with success?
//heightFromTop is an NSLayoutConstraint referenced from IB
[UIView animateWithDuration:0.25 animations:^{
self.heightFromTop.constant= 550.f;
}];
The result is an instant jump to the height in question.
Just follow this exact pattern:
where
myViewis the view whereself.heightFromTopwas added to. Your view is “jumping” because the only thing you did in the animation block was to set the constraint, which does not cause layouts immediately. In your code, the layout happens on the next run loop after you setheightFromTop.constant, and by that time you are already outside the scope of the animation block.In Swift 2: