我有一个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
然而,我没有看到动画向上移动,而是看到它从顶部向下移动到中心。
有人能指出我正确的方向来解决这个问题吗?
答案 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];
}];
}