CAScrollLayer中的Self Scrollable文本

时间:2015-04-14 00:35:25

标签: ios core-animation

我想让CAScrollLayer中的文本从起点到终点自动滚动,然后重置动画。但是我似乎无法在Scroll图层中获取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]

1 个答案:

答案 0 :(得分:3)

为此,几乎不需要或想要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
    })

enter image description here