カスタム 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
];
しかし、まったく何も起こっていません。何とか機能させる唯一の方法は、無効/有効にすることでした。しかし、無効化と強調表示の色付けは異なる必要があり、これらの状態の両方が必要なので、これは実際にはオプションではありません.
どんな助けでも大歓迎です!