私はCoreAnimation、CALayer、およびこれらすべてのものに完全に慣れていないので、我慢してください。ラベルとして使用するカスタムNSTextFieldがあります。コンテンツがその位置をアニメーション化するようにしたいので、ラベルの幅に対して長すぎる場合は、文字列全体が表示されます。これで、アニメーション自体は正常に機能しています。私はこれをCABasicAnimationで実装しました:
- (void)awakeFromNib {
CALayer *newLayer = [CALayer layer];
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
[animation setFromValue:[NSValue valueWithPoint:NSMakePoint(0, 0)]];
[animation setToValue:[NSValue valueWithPoint:NSMakePoint(-self.attributedStringValue.size.width, 0)]];
[animation setDuration:5.0];
[animation setRepeatCount:HUGE_VAL];
[newLayer addAnimation:animation forKey:@"position"];
[self setLayer:newLayer];
[self setWantsLayer:YES];
}
唯一の問題は、drawRect:メソッドが画面に表示されているものだけを描画することです。そのため、drawRect:メソッドをオーバーライドして、属性付きの文字列全体を描画すると思いました。しかし、これを行うと、何も描画されません...誰かが私を正しい方向に向けることができますか?
ありがとうございました!