何が問題なのか理解できません。助けていただければ幸いです。
UIlabel
マーキーのようにアニメーション化されていUIView AnimationWithDuration
ます...(このコードを機能させる必要があります。他の場所で何かをフォークすることはできません。マーキー担当者を提供しないでください。)
このアニメーション中に新しいテキストを設定しましたが、残念ながら前のテキストは置き換えられず、上に描かれています。最終的に、2 つのテキストが互いに重なって表示されます。テキストを再度設定しようとすると、テキストが消去されるか、3 番目の線が描画される可能性があります。
おそらくスレッドの問題だと思って次のコードを試しましたが、何もしません
@synchronized (self.songLabel.text) {
self.songLabel.text = nil;
self.songLabel.text = [trackItems objectForKey:@"TrackName"];
}
ゲッターとセッターをアトミックに設定しましsongLabel
たが、どちらも役に立ちません。
何を試せばいいのかわからない… 助けてくれてありがとう!
編集:アニメーションを処理するコードは次のとおりです
- (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];
}];
}