1

如果您能帮助我,我无法理解出了什么问题,那就太好了!

我有一个像字幕一样的UIlabel动画UIView AnimationWithDuration......(我需要让这段代码工作,我不能在其他地方分叉一些东西,请不要提供字幕代表。)

在这个动画中我设置了一个新的文本,不幸的是前一个不是替换而是绘制了。我最终得到了两个相互重叠的文本。如果我再次尝试设置文本,它可能会被清理,或者它可能会绘制第三条线。

我尝试了以下代码,认为这可能是线程问题,但它没有做任何事情

@synchronized (self.songLabel.text) {
    self.songLabel.text = nil;
    self.songLabel.text = [trackItems objectForKey:@"TrackName"];
}

我已将我的songLabelgetter 和 setter 设置为原子的,它也无济于事。

我不知道该尝试什么...谢谢您的帮助!

编辑:这是处理动画的代码

- (void)animateSongLabel
{

    if (!self.player.rate) {

        [UIView animateWithDuration:.5 animations:^{

            self.songLabel.left = 25.f;
        }];

        return;
    }

    if (!self.canAnimateLabel) {
        return;
    }
    self.animateLabel = NO;
    [UIView animateWithDuration:.25 delay:0. options:UIViewAnimationOptionCurveLinear animations:^{

         self.songLabel.left -= 15.f;

    } completion:^(BOOL finished) {

        self.animateLabel = YES;

        if (self.songLabel.right < -10.f) {

            self.songLabel.left = 320.f;
        }
        [self animateSongLabel];
    }];
}
4

0 回答 0