코드 내 -(void)setEditing:(BOOL)editing animated:(BOOL)animated
메서드를 호출하여 탐색 바의 RHS에있는 두 개의 단추를 서로 바꿉니다.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
는 awakefromNib
에서 미리 정의 된 UIBarButtonItems, 설치를 포함하는 인스턴스 변수입니다.
self.addToOrderButton
의 버튼을 self.addItemButton
에있는 한 후 상당히 넓은, 그래서 편집 상태의 변화가 트리거 될 때 나는의 LHS에 editButtonItem
표준을 눌러 (두 폭 사이의 미묘한 애니메이션으로 자신을 싶습니다 탐색.
I 버튼 변화가 있지만, 자신의 위치보다 왼쪽 상단-아니라 개별적으로 제자리에 위치가 비행하고 그들의 폭을 애니메이션으로 애니메이션 않습니다 [UIView beginAnimations:nil context:NULL];
와 [UIView commitAnimations];
와 전체 if:else
을 둘러싸고합니다.
탐색 표시 줄 요소에 애니메이션을 적용하는 방법 그래서 각 개별 버튼 (RHS 버튼, 제목)이보다 적절하고 제한적인 방식으로 움직입니다.
[self.navigationItem setRightBarButtonItem: self.addToOrderButton animated:YES];
... 당신을 위해 그것을 애니메이션됩니다
답변을 수락했습니다. 그건 정확히 당신이 묘사하고 잘 작동합니다. 많은 감사합니다. 옆으로, 발생하는 실제 애니메이션을 조정할 수있는 방법이 있습니까? 여기에 제시된 것처럼 크로스 페이드 (cross-fade)가 가능합니다. 그러나 '프레임'의 텍스트에 대한 크로스 페이드와 버튼 LHS의 애니메이션 이동의 조합은 훨씬 더 좋습니다. – creednmd
SDK에는 직접적인 메소드가 없습니다. 아마도 무언가를 직접 구현할 수는 있지만, 중요하지는 않습니다 (범주로 메서드를 재정의하고 자신의 전환으로 바꾸는 것과 같은). – lxt
내가 문서를 공부할 필요가있는 것처럼 들린다. 그래도 옳은 길에 나를 데려 와줘서 고마워. – creednmd