나는 부드러운 뷰 전환 만들기 위해 무슨 짓을 : 기본적으로 메뉴 바 및 툴바의 사이에 콘텐츠를 자동으로 크기를 조정하지 말아야 뷰 (예를 들면 사진을)
1) 인터페이스 빌더에서를 그래서 선택 해제 Suboress Autoresize 플래그
2) 숨기기/숨기기 해제 이벤트에 대해 다음 터치 처리기를 생성했습니다. 요점은 기본 제공 숨기기/숨기기 애니메이션에 애니메이션을 추가하는 데
[UIView transitionWithView:self.view
duration:UINavigationControllerHideShowBarDuration
options:UIViewAnimationOptionCurveLinear
animations:^
{
/* Put other animation code here ;) */
}];
코드 스 니펫을 사용하는 것입니다.
원래 나는 두 개의 막대를 숨기거나 숨김 해제하고 iOS에서 내부보기의 크기를 조정하게했습니다. 결과 (시뮬레이터에서)는 실망스럽고 부드럽 지 않았습니다. 막대를 한 개만 숨기면보기의 크기가 잘 조정되지만 코드의 막대는 두 개가 아닙니다.
그래서 여기에 트릭을 수행하는 전체 touchedBegun 이벤트 핸들러의 :
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
AppDelegate *app = (AppDelegate*) [[UIApplication sharedApplication] delegate];
if (blVisible) {
[app.navigationController setToolbarHidden:YES animated:YES];
[app.navigationController setNavigationBarHidden:YES animated:YES];
[UIView transitionWithView:self.view
duration:UINavigationControllerHideShowBarDuration
options:UIViewAnimationOptionCurveLinear
animations:^
{
/* Put other animation code here ;) */
self.img.frame = CGRectMake(0, 0, 320, 480);
}
completion:^(BOOL finished)
{
}];
} else {
[app.navigationController setToolbarHidden:NO animated:YES];
[app.navigationController setNavigationBarHidden:NO animated:YES];
[UIView transitionWithView:self.view
duration:UINavigationControllerHideShowBarDuration
options:UIViewAnimationOptionCurveLinear
animations:^
{
/* Put other animation code here ;) */
self.img.frame = CGRectMake(0, 0, 320, 387);
}
completion:^(BOOL finished)
{
}];
}
blVisible = !blVisible;
}
하나 개의 작은 의견 : 지금은 원활하지만, 시뮬레이터에서 내가 보는 것은 아이폰 OS가 어떻게 든 /가에있는 두 개의 막대를하지 숨김을 취소 숨 깁니다이다 -sync 그래서보기 크기 조정이 완벽하게 시간 초과되지 않습니다. Pls도 장치를 확인하십시오.
좀 더 완벽한 솔루션을 원하는 경우에 당신이 ... 완벽하게 숨기기/숨기기 해제 효과를 설정 제어 할 자신에 대한 상세한 답변에 대한
출처
2013-08-07 01:16:56
nzs
감사 막대를 구현해야한다 생각합니다. 나는 당신의 접근 방식을 시도해 보았지만 조금 개선되었다.하지만 슬프게도 문제는 해결되지 않는다. 여러 실험을 거친 후에는보기가 한 방향으로 부드럽게 움직입니다. 즉, 탐색 막대가 숨겨 짐에 따라 화면이 부드럽게 위로 올라갈 수 있지만 아래쪽 도구 모음이 화면에서 벗어나기 전에보기의 아래쪽이 아래로 이동합니다. 나는 완벽한 솔루션을 찾기 위해 직접 구현에 대한 귀하의 의견은 아마도 정확하다고 생각합니다 ... iOS는 두 막대를 동시에 부드럽게 숨기는 방법이없는 것 같습니다. – James
다른 프로젝트에서 viewA (navbar없이)를 viewB (navbar 사용)로 밀어 넣고 push anim 중에 활성화 시키면 iOS가 이것을 어떻게 처리하는지 실망 시켰습니다. 그래서 iOS navbar를 항상 숨김 상태로 만들기로 결정했습니다. 푸시/팝 기능을 구현하고 사용자 정의 navbar를 구현 ... – nzs
나는이 해결책으로 더 많은 것을 할 수 있다고 생각합니다. 예 : 1) 숨기기/숨김을 취소하고 숨김 상태에서보기를 부드럽게 또는 2) 숨김/동작은보기의 알파를 0.4로 변경하고 다시 1.0으로 변경하여이 솔루션의 작은 불완전 함을 보완합니다. 마침내 나는이 답변에서 질문에 대한 완전한 시각을 얻었다면 @James가 다른 사람들을 도울 수 있도록 받아 들여야한다고 생각한다. – zZzZ