28

ここで、廃止された方法UIButtonを使用して のタイトルの変更をアニメーション化する方法を見つけました。beginAnimations:context:

iPhone用UIBUttonタイトルアニメーション

現在の API を使用して同じことを行う方法は?

アップデート:

ブロックベースのアニメーションを使用しようとしました:

NSTimeInterval animationDuration = animated ? 1.f : 0.f;
[UIView animateWithDuration:animationDuration delay:0.f options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction animations:^{
    [button setTitle:newTitle forState:UIControlStateNormal];
    [button setTitleColor:newTitleColor forState:UIControlStateNormal];
} completion:nil];

色の変化はアニメーション化されません。

4

3 に答える 3

54

ブロックを使用する:

[UIView transitionWithView:self.flipLabelButton duration:1 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{

    [self.flipLabelButton setTitle:newText forState:UIControlStateNormal];

} completion:nil];
于 2012-11-05T12:25:23.020 に答える
8

AnimationGroups に加えて、一般に 2 種類のアニメーションがあります。1 つはプロパティ アニメーション用で、もう 1 つはコンテンツ、トランジション、またはプロパティを使用してアニメーションを実行できないものなどをアニメーション化するためのものです。したがって、2 番目の解決策はあなたの選択であり、2 つの方法でこれを実現できます。 CATransition を使用します。

CATransition *transition = [CATransition animation];
transition.type = kCATransitionFade;
transition.duration = 1;
[button.layer addAnimation:transition forKey:kCATransition];
[button setTitle:newTitle forState:UIControlStateNormal];
[button setTitleColor:newColor forState:UIControlStateNormal];

もう1つの方法は、@ jjv360が言ったようにUIKitブロックを使用することですが、明らかに色を反転できないため、その内部で色をアニメーション化することはできません.

于 2015-08-31T09:40:18.173 に答える