动画视图在启动时向上移动
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];
}];
}
我有一个 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];
}];
}