5

こんにちは、以下のコードで使用する CABasicAnimation を使用してフレーム サイズを変更しました

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"]; を変更してみました。

まったく機能しません。

4

2 に答える 2

12

Apple はそれに対する答えを持っています: http://developer.apple.com/library/mac/#qa/qa1620/_index.html

しかし、個人的にはこれが最善の方法だとは思いません。CATransform3DMakeScale の方が優れているようです。

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"];
于 2011-05-10T12:36:23.890 に答える