2015-05-04 23 views
0

我有一个简单的动画,它移动了我的视图的图层并保持它的最终状态。当标签的文字改变时,核心动画将图层返回到原始位置

CGPoint originalPosition = self.redSquare.layer.position; 
self.redSquare.layer.position = CGPointMake(100, 100); 
CABasicAnimation *animation = [[CABasicAnimation alloc]init]; 
animation.keyPath = @"position.x"; 
animation.fromValue = @(originalPosition.x); 
animation.toValue = @250; 
animation.duration = 2; 

[self.redSquare.layer addAnimation:animation forKey:@"basic"]; 
self.redSquare.layer.position = CGPointMake(250, originalPosition.y); 

但是,当我更改标签的文本时,图层跳转到它的原始位置。

CGPoint originalPosition = self.redSquare.layer.position; 
self.redSquare.layer.position = CGPointMake(100, 100); 
CABasicAnimation *animation = [[CABasicAnimation alloc]init]; 
animation.keyPath = @"position.x"; 
animation.fromValue = @(originalPosition.x); 
animation.toValue = @250; 
animation.duration = 2; 
animation.delegate = self; 

[self.redSquare.layer addAnimation:animation forKey:@"basic"]; 
self.redSquare.layer.position = CGPointMake(250, originalPosition.y); 

self.label.text = @"Started"; 

为什么会发生?

回答

0

因为,当你改变你的文本,认为需要重新绘制,

如果启用此观点的autoLayout(默认启用),它会通过调整帧自动布局。

所以有到解决方案

选项1:您的视图 禁用自动布局

选项2 当谈到改变帧动画,尝试动画自动布局