

UILabel(とUILabelを子として持つView)の表示位置をアニメーションさせると通常アニメーションされないテキストの変更もアニメーションされてしまいます。

下記がサンプルコードです。

[code]

    - (void)showErrorViewWithErrorText:(NSString *)errorText {
        // エラービューに表示する文字列を設定、エラービューはUILabelを子として持つ
        self.errorView.errorText = errorText;
    
        [UIView animateWithDuration:0.2
                              delay:0.0
                            options:UIViewAnimationOptionTransitionNone
                         animations:^{
                             // 画面外にあるエラービューを表示するために制約値を変更
                             self.errorViewToNicknameConstraint.constant = 55.0;                                                     
                             [self.view layoutIfNeeded];
        }
                         completion:^(BOOL finished) {
    
        }];
    }
    
[/code]

現状ですとエラービューが表示される時に、エラービューに表示されるLabelの文字が古い文字から新しい文字に変更するようにアニメーションがかかってしまいエラーの表示が分かりにくいです。

テキスト変更に対するアニメーション防止方法ご存知でしたらご教授いただきたく。  
よろしくお願いします。


CC BY-SA 3.0
2016-03-17T08:51:25.927
23219
2016-04-16T14:59:50.973
12232
question
ios uilabel
UILabelのテキスト変更時にテキスト変更のアニメションをさせない方法


自己解決できました。

新規テキスト入力後、何もアニメーションさせないアニメーションを実施し（分かりづらい日本語ですね）、その完了後に本当にアニメーションさせたい処理を記述します。

下記がそのコード例です

[code]

    - (void)showErrorViewWithErrorText:(NSString *)errorText {
        // エラービューに表示する文字列を設定
        self.inputErrorView.errorText = errorText;
        // 何もしないアニメーション
        [UIView animateWithDuration:0.0
                         animations:^{
    
        }
                         completion:^(BOOL finished) {
                             // ここに本当のアニメーション
                             [UIView animateWithDuration:0.2
                                                   delay:0.0
                                                 options:UIViewAnimationOptionTransitionNone
                                              animations:^{
                                                  // 画面外にあるエラービューを表示するために制約値を変更
                                                  self.inputErrorViewToNicknameConstraint.constant = 55.0;
                                                  [self.view layoutIfNeeded];
                                              }
                                              completion:^(BOOL finished) {
    
                                              }];
                         }];
        }
    
[/code]


CC BY-SA 3.0
2016-03-17T09:55:49.287
23221
2016-03-17T09:55:49.287
12232
23219
answer