Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 动画:如何使用层设置视图动画?_Ios_Core Animation - Fatal编程技术网

Ios 动画:如何使用层设置视图动画?

Ios 动画:如何使用层设置视图动画?,ios,core-animation,Ios,Core Animation,我希望以动画方式将视图从一个位置移动到一个新位置。如果更新视图的层位置,我认为视图将以动画方式移动到新位置,我猜这是隐式动画,但是没有动画,为什么 - (IBAction)startAnimation:(id)sender { CGPoint position = self.imageView.layer.position; position.y += 90; self.imageView.layer.position = position; } 隐式动画仅适用于独立层

我希望以动画方式将视图从一个位置移动到一个新位置。如果更新视图的层位置,我认为视图将以动画方式移动到新位置,我猜这是
隐式动画
,但是没有动画,为什么

- (IBAction)startAnimation:(id)sender {
    CGPoint position = self.imageView.layer.position;
    position.y += 90;
    self.imageView.layer.position = position;
}

隐式动画仅适用于独立层,而不适用于备份视图的层。您将需要显式设置该位置的动画。您可以通过为位置创建CABASICANIATION并将其添加到层中,或者使用UIView动画来设置视图中心特性的动画

创建显式动画 使用UIView动画
隐式动画仅适用于独立层,而不适用于备份视图的层。您将需要显式设置该位置的动画。您可以通过为位置创建CABASICANIATION并将其添加到层中,或者使用UIView动画来设置视图中心特性的动画

创建显式动画 使用UIView动画
或者第三个选项是创建一个附加层,并添加为视图层的子层,然后更改该附加层的特性。这样,附加层就不会是视图背景层,它将支持隐式动画。但是,UIView动画比创建CAAnimation objectsDavid简单得多,也更清晰。在将层移动到新位置时,我遇到了
toValue
属性的问题。你介意看一下吗?或者第三个选项是创建一个附加层,并添加为视图层的子层,然后更改该附加层的特性。这样,附加层就不会是视图背景层,它将支持隐式动画。但是,UIView动画比创建CAAnimation objectsDavid简单得多,也更清晰。在将层移动到新位置时,我遇到了
toValue
属性的问题。你介意看一下吗?
CABasicAnimation *move = [CABasicAnimation animationWithKeyPath:@"position"];
move.toValue = [NSValue valueWithCGPoint:newPoint];
move.duration = 0.3;
[self.imageView.layer addAnimation:move forKey:@"myMoveAnimation"];
[UIView animateWithDuration:0.3 animations:^{
    self.imageView.center = newCenter;
}];