我正在調用我的代碼中的-(void)setEditing:(BOOL)editing animated:(BOOL)animated
方法,以在我的導航欄右側的兩個按鈕之間切換。如何動畫UINavigationBar中的按鈕更改?
-(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,設置在awakefromNib
的ivars。
在self.addToOrderButton
按鈕是顯著較寬則一個在self.addItemButton
,所以我喜歡他們的希望是兩個寬度之間的微妙的動畫的編輯狀態的變化被觸發時(通過輕敲標準editButtonItem
上的LHS導航。
如果我環繞整個if:else
與[UIView beginAnimations:nil context:NULL];
和[UIView commitAnimations];
按鈕變化確實動畫,但它們的位置飛入位分別從左上角,而不是地方,只是動畫它們的寬度。
如何爲導航欄元素設置動畫效果使每個人(RHS按鈕,標題)以更適當,更剋制的方式生成動畫?
我接受了答案,如這完全符合你所描述的並且工作正常。非常感謝。順便說一句,有沒有一種方法來調整發生的實際動畫?如此處所呈現的那樣,這是一種交叉漸變 - 這很好 - 但是對於文本的交叉漸變和對於「幀」的按鈕LHS的動畫移動的組合會更好。 – creednmd 2011-02-15 18:51:29