CAScrollLayer中的自卷动文本
我想从一个CAScrollLayer自己的文本从起点到终点滚动文本,然后重置animation。 不过,我似乎无法得到一个滚动层内的CATextLayer。 我甚至试图创build一个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。 对标签的横向移动进行animation处理,就完成了。
这是一个粗略的草图:
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 })