Ios CAScrollLayer中的自滚动文本

Ios CAScrollLayer中的自滚动文本,ios,core-animation,Ios,Core Animation,我想让文本在CAScrollLayer中从起点滚动到终点,然后重置动画。但是,我似乎无法在滚动层中获得CATextLayer。我甚至尝试创建一个UILabel,并将其层用作滚动层的子层 这是非工作代码。我不知道罪魁祸首是什么,也不知道我遗漏了什么 UILabel *sampleText = [[UILabel alloc] init]; sampleText.font = [UIFont systemFontOfSize:20]; sampleText.text = @"Hello Wor

我想让文本在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来实现这一点。只需从一个剪裁到其边界的superview开始,并在其内部放置一个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来实现这一点。只需从一个剪裁到其边界的superview开始,并在其内部放置一个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来实现这一点。只需从一个剪裁到其边界的superview开始,并在其内部放置一个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来实现这一点。只需从一个剪裁到其边界的superview开始,并在其内部放置一个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
    })


马特,你是个天才。。。虽然知道为什么滚动层没有呈现文本会很好,但我在保持在其父视图内时遇到了问题。。就像在你的例子中,文本剪辑在边缘,并停留在视图中,但我的文本离开了容器,你的表达式视图.frame.origin.x不可分配“,而你的表达式视图.frame.origin.x不可分配”对不起,这太快了。你不能在Objective-C中这样做。哈哈哈!:)您必须将框架提取到CGRect变量中,更改变量,然后将其重新设置到框架中。“就像您的示例中,文本剪辑在边缘并停留在视图中,但我的文本离开了容器”,因为您没有按照我说的做。视图必须设置为剪裁其子视图!马特,你是个天才。。。虽然知道为什么滚动层没有呈现文本会很好,但我在保持在其父视图内时遇到了问题。。就像在你的例子中,文本剪辑在边缘,并停留在视图中,但我的文本离开了容器,你的表达式视图.frame.origin.x不可分配“,而你的表达式视图.frame.origin.x不可分配”对不起,这太快了。你不能在Objective-C中这样做。哈哈哈!:)您必须将框架提取到CGRect变量中,更改变量,然后将其重新设置到框架中。“就像您的示例中,文本剪辑在边缘并停留在视图中,但我的文本离开了容器”,因为您没有按照我说的做。视图必须设置为剪裁其子视图!马特,你是个天才。。。虽然知道为什么滚动层没有呈现文本会很好,但我在保持在其父视图内时遇到了问题。。就像在你的例子中,文本剪辑在边缘,并停留在视图中,但我的文本离开了容器,你的表达式视图.frame.origin.x不可分配“,而你的表达式视图.frame.origin.x不可分配”对不起,这太快了。你不能在Objective-C中这样做。哈哈哈!:)您必须将框架提取到CGRect变量中,更改变量,然后将其重新设置到框架中。“就像您的示例中,文本剪辑在边缘并停留在视图中,但我的文本离开了容器”,因为您没有按照我说的做。视图必须设置为剪裁其子视图!马特,你是个天才。。。虽然知道为什么滚动层没有呈现文本会很好,但我在保持在其父视图内时遇到了问题。。就像在你的例子中,文本剪辑在边缘,并停留在视图中,但我的文本离开了容器,你的表达式视图.frame.origin.x不可分配“,而你的表达式视图.frame.origin.x不可分配”对不起,这太快了。你不能在Objective-C中这样做。哈哈哈!:)您必须将框架提取到CGRect变量中,更改变量,然后将其重新设置到框架中。“就像您的示例中,文本剪辑在边缘并停留在视图中,但我的文本离开了容器”,因为您没有按照我说的做。视图必须设置为剪裁其子视图!