动画视图在发射时向上移动

时间:2015-02-14 20:01:41

标签: ios uiview uiviewcontroller autolayout uiviewanimation

我有一个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

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

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

1 个答案:

答案 0 :(得分:1)

你应该使用约束来代替框架:

- (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];
    }];
}