4

ウィンドウ全体で NSTextView の動きをアニメーション化するコードを書いています。ユーザーが期間を設定できるようにしたい。

このバージョンは正常に動作します:

 // code to setup TextView

[centerView addSubview:targetTextView];

[NSAnimationContext beginGrouping];
float finalDuration = expf((11-duration)/5) + 2;
[[NSAnimationContext currentContext] setDuration:(finalDuration)];
[[targetTextView animator]setFrame:NSMakeRect(-170,(centerViewRect.size.height * 1/2) - 40,160,80)];
[NSAnimationContext endGrouping];

これは、タイミングをデフォルト値のままにします。

 // code to setup TextView

[centerView addSubview:targetTextView];

CABasicAnimation *posAnim = [CABasicAnimation animationWithKeyPath:@"frame"];
[posAnim setFromValue:[NSValue valueWithRect:NSMakeRect(centerViewRect.size.width - 170,(centerViewRect.size.height * 2/3) - 40,160,80)]];
[posAnim setToValue:[NSValue valueWithRect:NSMakeRect(10,(centerViewRect.size.height * 2/3) - 40,160,80)]];
float finalDuration = expf((11-duration)/5) + 2;
[posAnim setDuration:finalDuration];
[targetTextView setAnimations:[NSDictionary dictionaryWithObjectsAndKeys:posAnim,@"frame",nil]];
[[targetTextView animator]setFrame:NSMakeRect(-170,(centerViewRect.size.height * 1/2) - 40,160,80)];

最初のものは機能し、2番目のものは機能しない理由を誰か教えてもらえますか? 彼らは私と同等のようです。

ありがとう!

4

1 に答える 1

2

使用する CABasicAnimation について
[CATransaction setAnimationDuration:yourDuration];

于 2012-08-20T16:26:07.827 に答える