出于某种原因,我的UIImageView
从其结束位置动画到其起始位置。我无法理解为什么但是感觉它与使用约束有关(我在我的应用程序中对所有UIView
使用约束)。
我的动画应该在屏幕顶部设置logoImageView
动画。
这是我的代码:
NSLog(@"%@", NSStringFromCGPoint(self.logoImageView.center));
[self.logoImageView updateConstraintsIfNeeded];
[UIView animateWithDuration:3.0f
animations:^{
[self.logoImageView setCenter:CGPointMake(CGRectGetMidX(self.logoImageView.frame),
CGRectGetMaxY(self.view.frame) + CGRectGetHeight(self.logoImageView.frame))];
[self.logoImageView updateConstraintsIfNeeded];
} completion:^(BOOL finished) {
NSLog(@"%@", NSStringFromCGPoint(self.logoImageView.center));
[self performSegueWithIdentifier:@"Play" sender:nil];
}];
这是我的职位记录:
2014-09-05 18:08:56.673 Cups[2142:89629] {160, 111.5}
2014-09-05 18:09:01.250 Cups[2142:89629] {160, 645}
但动画则反过来。有什么想法吗?
答案 0 :(得分:0)
如果你这样做会发生什么:
[UIView animateWithDuration:3.0f
animations:^
{
[self.logoImageView setCenter:CGPointMake(CGRectGetMidX(self.logoImageView.frame),
-(CGRectGetHeight(self.logoImageView.frame)/2)];
} completion:^(BOOL finished)
{
[self performSegueWithIdentifier:@"Play" sender:nil];
}];
答案 1 :(得分:0)
这可能与您在没有实际更新约束的情况下调用-updateLayoutConstraints
这一事实有关。
更好的方法是设置约束的动画,而不是设置视图的位置和框架。要记住的一个好方法是,您可以在XIB中创建符合约束的插座。
假设您在视图控制器中设置了一个名为NSLayoutConstraint
的{{1}}作为IBOutlet,它将logoImageViewTopConstraint
的顶部设置为superview的顶级布局指南。在设计时将约束的常数设置为100左右(从视图顶部向下移动100个点)。然后使用该约束,你可以为你的动画做这样的事情:
logoImageView
如果你正常工作,只需使用约束的常量,直到你得到你想要的确切效果。
答案 2 :(得分:0)
事实证明,在UIView层上运行的CABasicAnimation正在中断UIView动画。谢谢你的建议