注意:これはOS X上のCocoaアプリケーション用であり、iOSではありません。Core Animation:anchorPointを10.8に設定して、レイヤーを中心に回転させます。
私はレイヤバックNSButton(NSViewのサブクラス)を持っています。私がしたいのは、Core Animationを使ってそのボタンを回転させることです。 、これは、それが実行されるとき、その中心点がNSViewのの原点であるように、層がダウンし、左にジャンプことを除いて、作品
CABasicAnimation *a = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
a.fromValue = [NSNumber numberWithFloat:0];
a.toValue = [NSNumber numberWithFloat:-M_PI*2];
[_refreshButton.layer setAnchorPoint:CGPointMake(0.5, 0.5)];
a.duration = 1.8; // seconds
a.repeatCount = HUGE_VAL;
[_refreshButton.layer addAnimation:a forKey:nil];
た:私はそれを行うには、次のコードを使用しています(0,0)の左下隅です。レイヤーはその中心を中心に回転しますが、明らかに左下のジャンプは受け入れられません。
ので、あまり読んだ後、私は10.8 APIのリリースでは、この行を見つけノート:
On 10.8, AppKit will control the following properties on a CALayer
(both when "layer-hosted" or "layer-backed"): geometryFlipped, bounds,
frame (implied), position, anchorPoint, transform, shadow*, hidden,
filters, and compositingFilter. Use the appropriate NSView cover methods
to change these properties.
これは、AppKitのは、上記のコードで-setAnchorPointに私の電話を「無視」されていることを意味し、その代わり、ありますアンカーポイントをNSViewの原点(0,0)に設定します。
私の質問は:これをどのように解決すればよいですか?レイヤーのanchorPointを設定するための「適切なNSViewカバーメソッド」(NSViewでこのようなメソッドが見つかりません)とは何ですか?終わりには、ボタンを無期限に中心点を中心に回転させたいだけです。
パーフェクト!ええと;私はポジションのプロパティを見ましたが、AppKitがそれを制御しようとしている上記の注釈を読んでいるので、試してみませんでした。ソリューションをありがとう! – Bryan
なぜ回転M_PI/2が最初の時計回りに時計回りに回転するのか? – greg
私はあなたのコードを見なければならないでしょう。あなた自身の質問を投稿するべきです。 –