我对 Core Animation、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: 方法来绘制整个属性字符串。但是,如果我这样做,则根本不会画出任何东西……谁能指出我正确的方向?
谢谢!