コード内で-(void)setEditing:(BOOL)editing animated:(BOOL)animated
メソッドを呼び出して、ナビゲーションバーのRHSにある2つのボタンを切り替えています。
-(void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
// Toggle ‘+’ and ‘Add To Order’ button.
if( editing ) {
self.navigationItem.rightBarButtonItem = self.addItemButton;
}
else {
self.navigationItem.rightBarButtonItem = self.addToOrderButton;
}
}
self.addItemButton
とself.addToOrderButton
は、事前定義されたUIBarButtonItemsを含むivarであり、awakefromNib
で設定されます。
self.addToOrderButton
のボタンはself.addItemButton
のボタンよりもかなり幅が広いので、編集状態の変更がトリガーされたとき(標準のeditButtonItem
をタップすることにより)、2つの幅の間の微妙なアニメーションにしたいと思います。ナビゲーションのLHSで。
if:else
全体を[UIView beginAnimations:nil context:NULL];
と[UIView commitAnimations];
で囲むと、ボタンの変更はアニメーション化されますが、位置をアニメーション化するだけでなく、左上から個別に配置されます。幅。
ナビゲーションバーの要素をアニメーション化して、個々の要素(RHSボタン、タイトル)をより適切で制限された方法でアニメーション化するにはどうすればよいですか?
self.navigationItem.rightBarButtonItem = self.addToOrderButton;
左右のバーボタンアイテムをアニメーション化するために使用できる特定の方法があります。
[self.navigationItem setRightBarButtonItem: self.addToOrderButton animated:YES];
...それはあなたのためにそれをアニメーション化します。アニメーション化するすべてのもの(タイトルを含む)が必要な場合は、ナビゲーションバーのsetItems:animated:
メソッドを使用することもできます(表示するナビゲーションアイテムの配列に渡します)。