7

次の方法でボタン (OpenNoteVisible.layer) の角の半径を変更しようとしています。

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"cornerRadius"];
animation.timingFunction = [CAMediaTimingFunction     functionWithName:kCAMediaTimingFunctionLinear];
animation.fromValue = [NSNumber numberWithFloat:10.0f];
animation.toValue = [NSNumber numberWithFloat:0.0f];
animation.duration = 1.0;
[animation.layer setCornerRadius:140.0];
[OpenNoteVisible.layer addAnimation:animation forKey:@"cornerRadius"];

しかし、このコードは [animation.layer setCornerRadius:140.0]; の行でエラーを出します。理由がわかりません。Quartzコアフレームワークをインポートしました。

4

2 に答える 2

23

アニメーション オブジェクトのレイヤー プロパティで角の半径を設定しています。このアニメーション オブジェクトにはレイヤー プロパティがありません。

この場合、アニメーション化しているもののレイヤーに角の半径を設定する必要がありますOpenNoteVisible。また、アニメーション オブジェクトの がレイヤーに設定している値と一致していることを確認する必要がありtoValueます。そうしないと、おかしなアニメーションが得られます。

コードは次のようになります。

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"cornerRadius"];
animation.timingFunction = [CAMediaTimingFunction     functionWithName:kCAMediaTimingFunctionLinear];
animation.fromValue = [NSNumber numberWithFloat:10.0f];
animation.toValue = [NSNumber numberWithFloat:140.0f];
animation.duration = 1.0;
[OpenNoteVisible.layer setCornerRadius:140.0];
[OpenNoteVisible.layer addAnimation:animation forKey:@"cornerRadius"];
于 2013-08-29T12:49:10.980 に答える