Liumx31
Liumx31

Reputation: 1210

UIView animation animates but immediately moves back to original position

This is written in Swift 2 in Xcode 7.

I have a UIView, which originally is set to be below the screen. Upon being triggered, it should slide up from the bottom of screen. This is the code for the animation:

func durationView(sender: UIButton){
    let heightOffset = self.durationNotificationContainerView.frame.height

    self.durationNotificationContainerView.translatesAutoresizingMaskIntoConstraints = false
    UIView.animateWithDuration(0.2, animations: {self.durationNotificationContainerView.frame = CGRectMake(self.durationNotificationContainerView.frame.origin.x, self.durationNotificationContainerView.frame.origin.y + heightOffset, self.durationNotificationContainerView.frame.width, self.durationNotificationContainerView.frame.height)})
}

What happens right now is when I press the UIButton that triggers this view, it slides up and then immediately back down (to outside of the screen). I should also point out that in my storyboard I have some views added manually with AutoLayout constraints, so I don't know if that's what is messing up my animation.

Upvotes: 1

Views: 1229

Answers (1)

pflous
pflous

Reputation: 571

In Autolayout, constraints need to be changed and updated in the the animation as seen below:

- (IBAction)moveAction:(id)sender {
    self.spaceConstraint.constant += 220;

    [UIView animateWithDuration:0.5 animations:^{
         [self.imageView layoutIfNeeded];
    }];
}

Upvotes: 0

Related Questions