动画视图在启动时向上移动

Animate view moving up on launch

我有一个 UIImageView,它在启动屏幕中水平和垂直居中。当启动屏幕出现时,我想在主故事板(主视图控制器)上显示相同的徽标,水平居中但在屏幕顶部。

我已将相同的图像视图添加到我的主情节提要中的相同位置,并添加了以下代码以使图像从屏幕中心到顶部具有动画效果。

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self animateLogo];
}

- (void)animateLogo {
    [UIView animateWithDuration:1 animations:^(void){
        CGRect currentFrame = self.logoView.frame;
        self.logoView.frame = CGRectMake(currentFrame.origin.x, self.view.frame.size.height, currentFrame.size.width, currentFrame.size.height);
    }];
}

@end

但是我没有看到动画向上移动,而是从顶部向下移动到中心。

有人可以指出正确的方向来解决这个问题吗?

您应该为约束而不是框架设置动画:

- (void) viewDidAppear:(BOOL)animated {
    self.topConstraint.constant = (self.view.frame.size.height - self.viewToAnimate.frame.size.height) / 2;
    [self.viewToAnimate setNeedsUpdateConstraints];
    [UIView animateWithDuration:.5 animations:^{
        [self.viewToAnimate layoutIfNeeded];
    }];
}