CAScrollLayer 内的自滚动文本
Self Scrollable text inside CAScrollLayer
我想让 CAScrollLayer 中的文本从起点滚动到终点,然后重置动画。但是我似乎无法在滚动层中获取 CATextLayer。我什至尝试创建一个 UILabel 并将其层用作滚动层的子层。
这是无效代码。我不知道罪魁祸首是什么或我错过了什么。
UILabel *sampleText = [[UILabel alloc] init];
sampleText.font = [UIFont systemFontOfSize:20];
sampleText.text = @"Hello World";
[sampleText sizeToFit];
[scrollLayer addSublayer:sampleText.layer];
//add scroll layer to view controllers view
[self.view.layer addSublayer:scrollLayer];
这是我对 CATextLayer 的尝试
CATextLayer *numberLayer = [CATextLayer layer];
[numberLayer setFont:@"Helvetica-Neue"];
[numberLayer setFrame:CGRectMake(0, 0, 20, 30)];
[numberLayer setString:@"Hello Wolrd"];
[numberLayer setAlignmentMode:kCAAlignmentCenter];
[numberLayer setForegroundColor:[[UIColor blackColor] CGColor]];
numberLayer.zPosition = 99;
[scrollLayer addSublayer:numberLayer];
[self.view.layer addSublayer:scrollLayer]
为此几乎不需要或不需要 CAScrollLayer 或 CATextLayer。只需从剪裁到其边界的超级视图开始,然后在其中放置一个 UILabel。为标签的横向移动设置动画,您就大功告成了。
这是一个粗略的草图:
let w1 = self.lab.frame.width
let w2 = self.lab.superview!.frame.width
let w = w1 - w2
let x = self.lab.frame.origin.x
UIView.animateWithDuration(5, delay: 0, options: .CurveLinear, animations: {
self.lab.frame.origin.x -= w
}, completion: {
_ in
self.lab.frame.origin.x = x
})
我想让 CAScrollLayer 中的文本从起点滚动到终点,然后重置动画。但是我似乎无法在滚动层中获取 CATextLayer。我什至尝试创建一个 UILabel 并将其层用作滚动层的子层。
这是无效代码。我不知道罪魁祸首是什么或我错过了什么。
UILabel *sampleText = [[UILabel alloc] init];
sampleText.font = [UIFont systemFontOfSize:20];
sampleText.text = @"Hello World";
[sampleText sizeToFit];
[scrollLayer addSublayer:sampleText.layer];
//add scroll layer to view controllers view
[self.view.layer addSublayer:scrollLayer];
这是我对 CATextLayer 的尝试
CATextLayer *numberLayer = [CATextLayer layer];
[numberLayer setFont:@"Helvetica-Neue"];
[numberLayer setFrame:CGRectMake(0, 0, 20, 30)];
[numberLayer setString:@"Hello Wolrd"];
[numberLayer setAlignmentMode:kCAAlignmentCenter];
[numberLayer setForegroundColor:[[UIColor blackColor] CGColor]];
numberLayer.zPosition = 99;
[scrollLayer addSublayer:numberLayer];
[self.view.layer addSublayer:scrollLayer]
为此几乎不需要或不需要 CAScrollLayer 或 CATextLayer。只需从剪裁到其边界的超级视图开始,然后在其中放置一个 UILabel。为标签的横向移动设置动画,您就大功告成了。
这是一个粗略的草图:
let w1 = self.lab.frame.width
let w2 = self.lab.superview!.frame.width
let w = w1 - w2
let x = self.lab.frame.origin.x
UIView.animateWithDuration(5, delay: 0, options: .CurveLinear, animations: {
self.lab.frame.origin.x -= w
}, completion: {
_ in
self.lab.frame.origin.x = x
})