Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.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 CABASICIANIzation from value&;CAKeyframeAnimation值错误_Ios_Objective C_Core Animation - Fatal编程技术网

Ios CABASICIANIzation from value&;CAKeyframeAnimation值错误

Ios CABASICIANIzation from value&;CAKeyframeAnimation值错误,ios,objective-c,core-animation,Ios,Objective C,Core Animation,我正在为视图(moveonView)设置动画。已为此视图设置自动布局。当我在CABasicAnimation中将moveonView的“y”位置指定为fromValue时,它在动画期间不在它的位置。我需要给它一些填充值,把它放在正确的位置上。为什么fromValue错误地放置了我的视图?断点还显示fromValue从“moveonView”中获取正确的“y”值,但仍然错误地放置视图。原因可能是什么 CABasicAnimation *animation = [CABasicAnimation a

我正在为视图(moveonView)设置动画。已为此视图设置自动布局。当我在CABasicAnimation中将moveonView的“y”位置指定为fromValue时,它在动画期间不在它的位置。我需要给它一些填充值,把它放在正确的位置上。为什么fromValue错误地放置了我的视图?断点还显示fromValue从“moveonView”中获取正确的“y”值,但仍然错误地放置视图。原因可能是什么

CABasicAnimation *animation = [CABasicAnimation animation];
animation.keyPath = @"position.y";
animation.delegate = self;
animation.fromValue = [NSNumber numberWithFloat:_moveonView.frame.origin.y];
animation.toValue = [NSNumber numberWithFloat:self.view.frame.size.height - 100]; //[NSValue valueWithCGPoint:endPosition.origin];
animation.duration = 3;
[_moveonView.layer addAnimation:animation forKey:@"basic"];
我需要给出一些填充值,以便将其放置在准确的位置上

 animation.fromValue = [NSNumber numberWithFloat:_moveonView.frame.origin.y + 50];

帧的原点和层的位置不是同一点

当您要求使用
frame.origin.y
时,它是视图左上角的y坐标(在iOS上),这意味着它与
cgredgetminy(frame)
相同

但是,图层的位置与视图的
中心相对应。因此,当您为position.y设置动画时,这与移动视图中心相同

您可以使用
CGRectGetMidY(frame)
更新from值(注意从min到mid


这确实很神奇。非常感谢你的帮助。谢谢你花时间给我解释这个概念。
animation.fromValue = @( CGRectGetMidY(_moveonView.frame) );