我试图沿着任意路径设置按钮动画。为此,我需要创建一个使用BezierPath for。的路径。
然而,每当我将moveToPoint设置为0,0而不是从屏幕的左上角开始动画时,按钮会出现一些奇怪的现象,按钮会显示在顶部并朝向左侧,因此它只是部分可见。
这里发生了什么? moveToPoint是否使用其他坐标系?
按钮的锚点设置为标准顶部,左侧。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
bezierPath = [[UIBezierPath alloc]init];
[bezierPath moveToPoint:CGPointMake(0, 0)];
[bezierPath addLineToPoint:CGPointMake(52, 83)];
[bezierPath addLineToPoint:CGPointMake(45, 59)];
[bezierPath addLineToPoint:CGPointMake(65, 30)];
}
-(void)randomAnimation
{
CAKeyframeAnimation* keyframeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
keyframeAnimation.duration = 4.0;
keyframeAnimation.path = [bezierPath CGPath];
[self.rndBtn.layer addAnimation:keyframeAnimation forKey:@"position"];
}
答案 0 :(得分:1)
您可以为图层的位置属性设置动画,默认情况下,该属性设置为图层的中心。如果您将按钮的图层中心设置为0,0,它将位于屏幕边缘的中心位置,并且半截。
您需要将起点设置为width / 2,height / 2。或者,您可以移动图层的anchorPoint,但这会产生副作用。