1

カスタム UIButton で UIBarButtonItem を初期化し、ナビゲーション コントローラー内で rightBarButtonItem に設定しました。

UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:rightNavigationButton];//rightNavigationButton is the custom UIButton I set up before

self.navigationItem.rightBarButtonItem = rightBarButtonItem;

UIButton の外観プロキシを介して、UIControlStates (Normal/Disabled/Highlighted) の色を設定しました。UIBarButtonItem は期待どおりに動作しています。

「保存ボタン」が押されたときに、UIBarButtonItem を強調表示して、何かが保存されたという視覚的なフィードバックを提供したいと考えています。私がやろうとしているのは、アニメーションの保存中にタイトルの色を変更するだけで UIBarButtonItem の強調表示をシミュレートすることです。これは、強調表示アニメーションをプログラムでトリガーする (または選択したプロパティを設定する) ことができないように見えるためです(この投稿

そこで、IBOutlet プロパティを設定し、それを InterfaceBuilder の UIBarButtonItem に接続し、rightBarButtonItem を割り当てました。「保存ボタン」が押されたとき、私はこれを試しています:

    [UIView animateWithDuration:0.5f
                      delay:0.0f
                    options:UIViewAnimationCurveEaseOut
                 animations:^{
                           //some other animation code here
                          [self.barButtonItemOutlet setTitleTextAttributes:[NSDictionary            dictionaryWithObjectsAndKeys:
                          [UIFont fontWithName:FONT_ICON size:FONTSIZE],UITextAttributeFont,
                          HIGHLIGHT_COLOUR,UITextAttributeTextColor,
                          [NSValue valueWithUIOffset:UIOffsetMake(0, 0)],UITextAttributeTextShadowOffset,
                          [UIColor colorWithRed:0 green:0 blue:0 alpha:0.0],UITextAttributeTextShadowColor,nil]
                          forState:UIControlStateNormal];

                 }
                 completion:nil
   ];

しかし、まったく何も起こっていません。何とか機能させる唯一の方法は、無効/有効にすることでした。しかし、無効化と強調表示の色付けは異なる必要があり、これらの状態の両方が必要なので、これは実際にはオプションではありません.

どんな助けでも大歓迎です!

4

1 に答える 1

1

さて、UIView クラスのドキュメントには次のように書かれています: UIView クラスの次のプロパティはアニメーション化可能です:

  @property frame  
  @property bounds  
  @property center  
  @property transform  
  @property alpha  
  @property backgroundColor  
  @property contentStretch  

そのため、色をアニメーション化することはできません。申し訳ありません。

編集:私の答えはアニメーションに関するものでしたが、より柔軟なアニメーションUIViewもあります。CALayer

このリンクを見つけました。アニメーションを使用すると、色をアニメーション化することもできますCALayer。調べてみましょう。編集:コア アニメーションに関するこの非常に役立つ本の章
を見つけました。残念ながら、 a のタイトルの色はアニメーション化できる a のプロパティではないように見えるため、問題は解決していないようです。すみません、やめました…UIBarButtonItemCALayer

于 2013-05-02T16:27:21.793 に答える