私は以下のコードを使ってビューを動かし、正しく動作するようになったので、今度はウィンドウを振ってみたいと思います。動作しません。NSWindowにログイン失敗ウィンドウのようにNOと言って振る舞いを与える方法
//-------- code 1
CGFloat DegreesToRadians(CGFloat degrees)
{
return degrees * M_PI/180;
}
NSNumber* DegreesToNumber(CGFloat degrees)
{
return [NSNumber numberWithFloat:
DegreesToRadians(degrees)];
}
---------------
[self.view setWantsLayer:YES];
CAKeyframeAnimation * animation= [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
[animation setDuration:0.04];
[animation setRepeatCount:10];
srand([[NSDate date] timeIntervalSince1970]);
float rand = (float)random();
[animation setBeginTime:CACurrentMediaTime() + rand * .0000000001];
NSMutableArray *values = [NSMutableArray array];
[values addObject:DegreesToNumber(-1)];
[values addObject:DegreesToNumber(1)];
[values addObject:DegreesToNumber(-1)];
[animation setValues:values];
[self.view.layer addAnimation:animation forKey:@"rotate"];
//-------- code 2
[self.window.animator addAnimation:animation forKey:@"rotate"];
[self.window.animator setWantsLayer:YES];
ルック[Core Animation Tutorial:Window Shake Effect](http://www.cimgf .com/2008/02/27/core-animation-tutorial-window-shake-effect /)を参照してください。私はそれがあなたにとって有益だと思います。ここでは、[Example project](http://www.cimgf.com/wp-content/uploads/2008/02/justsayno.zip)を直接ダウンロードすることができます。プロジェクトのウィンドウ:![Example image](http://i.stack.imgur.com/RNN5G.png) –
CAKeyframeAnimationのトリックをありがとう。 作成されたパスは、アニメータがコピーを作成するため、アニメータに割り当てた後に解放する必要があります。 shakeAnimation.path = shakePath; CGPathRelease(shakePath); – berbie