Cocoa touch 如何使用CABasicAnimation更改Frame.size
您好,我已使用以下代码中使用的CABasicAnimation更改了帧大小Cocoa touch 如何使用CABasicAnimation更改Frame.size,cocoa-touch,caanimation,Cocoa Touch,Caanimation,您好,我已使用以下代码中使用的CABasicAnimation更改了帧大小 CABasicAnimation *newanim; newanim = [CABasicAnimation animationWithKeyPath:@"bounds.size"]; newanim.duration=3.0; newanim.fromValue=[NSValue valueWithCGSize:CGSizeMake(0,0)]; newanim.toValue=[NSValue valueWith
CABasicAnimation *newanim;
newanim = [CABasicAnimation animationWithKeyPath:@"bounds.size"];
newanim.duration=3.0;
newanim.fromValue=[NSValue valueWithCGSize:CGSizeMake(0,0)];
newanim.toValue=[NSValue valueWithCGSize:CGSizeMake(self.backgroundImageView.bounds.size.width, self.foregroundImageView.bounds.size.height)];
newanim.fillMode=kCAFillModeForwards;
newanim.autoreverses = YES;
newanim.repeatCount = 1;
newanim.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
[self.view.layer addAnimation:newanim forKey:@"changeSize"];
但动画从原点开始并向两侧移动(就像动画从中心开始一样)
我试着换衣服
newanim=[CABasicAnimation animationWithKeyPath:@“frame.size”]
它根本不起作用。苹果对此有一个答案: 但就个人而言,我不认为这是最好的方式,CATTransformM3dMakeScale似乎更好:
CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
transformAnimation.duration=3.0;
transformAnimation.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeScale(scaleFactorX, scaleFactorY, scaleFactorZ)];
transformAnimation.removedOnCompletion = FALSE;
[layer addAnimation:transformAnimation forKey:@"transform"];
要在Swift 5中缩放层的框架,可以使用:
let animation = CABasicAnimation(keyPath: "transform.scale.y")
animation.toValue = 0.1
animation.duration = 1.5
animation.timingFunction = CAMediaTimingFunction.init(name: .easeInEaseOut)
layer.add(animation, forKey: "animation_scale_y")
transfrom.scale.y
缩放高度,transfrom.scale.x
缩放宽度,transfrom.scale.z
缩放深度
要在一个动画中变换所有缩放参数,可以使用
let animation = CABasicAnimation(keyPath: "transform.scale")
animation.toValue = CATransform3DMakeScale(0.1, 0.1, 1)
animation.duration = 1.5
animation.timingFunction = CAMediaTimingFunction.init(name: .easeInEaseOut)
layer.add(animation, forKey: "animation_scale")