Gentlepeople, 나는 절차상의 언어의 긴 배경에서 오는 & 아이폰의 초보자입니다. UINavigation 화면에서 TabBar를 숨기면 iPhone SDK 3.1의 화면이 20 픽셀 어긋납니다.
본인은 전체 식품 '레시피 검색 기능을 모방하려고 시도하고있다. 해당 응용 프로그램에서 화면 위쪽에 NavigationBar, 아래쪽에 TabBar 및 화면 위쪽으로 3 개의 단추가 그룹화되어 있습니다. 버튼을 선택하면 아래에서 TabBar를 감싸는 슬라이드 업 화면이 나타납니다. 슬라이드 업 화면에는 선택기와 '완료'버튼이 있습니다. 위에서 다른 버튼을 선택할 수 있다는 사실에서 알 수 있듯이 이것은 모달 화면이 아니며 선택 도구가 동적으로 변경됩니다. 또한 이것은 액션 시트가 아닙니다. 이 동작을 재현, 나는 비 모달 슬라이드 업 화면을 제시 아이폰의 ScrollViewSuite 샘플에서 자동 스크롤 프로젝트를 사용했다. 이것은 잘 돌아갔다. 다른 버튼을 선택하여 슬라이드 업 화면에서 동적으로 선택 도구를 변경할 수 있습니다. 내가 TabBar의를 커버하는 슬라이드 업 화면을 원하기 때문에, 나는 http://osdir.com/ml/iPhoneSDKDevelopment/2009-01/msg00246.html에서 제안을 사용했다. 간단히 말해 tabBarController.view.frame 높이를 높이면 프레임이 화면보다 커지고 TabBar (하단에 고정됨)가 사용자보기에서 제거됩니다. 슬라이드 업 화면과 TabBar 숨기기 조합이 허용되었습니다. 인생은 상대적으로 장미 빛이었다. NavigationBar를 추가하기 만하면됩니다. 나는 그것을 Navigaion 컨트롤러 화면을 만들기 위해 뷰 컨트롤러에서 IB에서 화면을 변경할 때 TabBar의 숨어있는 경우
는, 나는 어떻게 든보기에서 20 픽셀 변화를 도입!? NavigationBar 자체는 괜찮지 만 밑의 모든 항목은 20 픽셀 씩 위로 이동합니다. 그러나 슬라이드 업 화면은 여전히 괜찮습니다. (20 픽셀은 iPhone의 상태 표시 줄의 높이입니다.)
내 IB는 TabBarCongroller가있는 MainWindow.xib와 그 안에있는 NavigationControllers가있는 표준 배열입니다. 그.
- (void)toggleThumbView
{
if (!thumbViewShowing)
{
[self createSlideUpViewIfNecessary]; // no-op if slideUpView has already been created
//Hide the TabBar, which introduces a 20 pixel shift up of everything except the navigation bar
UITabBar *ntoTabBar = self.tabBarController.tabBar;
CGRect tbcFrame = self.tabBarController.view.frame;
self.tabBarController.view.frame = CGRectMake(tbcFrame.origin.x ,
tbcFrame.origin.y ,
tbcFrame.size.width ,
tbcFrame.size.height + ntoTabBar.frame.size.height);
//The following code really doesn't matter for discussions about the problem, simply resizing the
//tabBarController.view.frame above has already introduced the 20 pixel problem
CGRect frame = [slideUpView frame];
frame.origin.y -= frame.size.height ;
frame.origin.y += ntoTabBar.frame.size.height ;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
[slideUpView setFrame:frame];
[UIView commitAnimations];
thumbViewShowing = !thumbViewShowing;
}
}
나는 autoresizingMask과 autoResizesSubviews을 가지고 노는 시도했다 : 여기
는 코드입니다. 다음은 20 픽셀 이동을 제거합니다.[self.tabBarController.view setAutoresizesSubviews:NO];
불행히도 TabBar가 숨겨지지 않습니다. 20 픽셀을 생각하면 실마리가 될지도 모르겠다. 나는 XIB의 모든 것에 대해 IB의 'Wants Full Screen'을 선택하지 않았지만 아무 소용이 없다. 나는 &을 NIB에서 체크하지 않고 체크했다. 그리고 시뮬레이트 된 인터페이스 엘리먼트를 모두 제거했다. 그래서 프로그램은 크기 조절을해야한다. (나는 시뮬레이트 된 것들이 프로그램 컨트롤을 금지한다고 믿는다.) 다시는 아무것도 보이지 않는다. 그 트릭을. tbcFrame.origin.y를 20 픽셀 씩 늘리면 화면 이동이 없어지지만 NavigationBar가 20 픽셀 낮아지고 아래에있는 모든 항목을 덮어 맨 위에 20 픽셀의 여백을 남깁니다. 이 문제는 3.0 SDK 시뮬레이터에서 나타 났으며 3.1.2로 업그레이드되었습니다. 최신/최고가 좋았지 만, 내 문제를 해결하지 못했습니다.
이미 대머리가 아니었다면 내 머리를 꺼내 것입니다. 어디서 볼 수 있는지에 대한 제안은 크게 감사하겠습니다. 별도의 ViewController를 통해 슬라이드 업 뷰를 푸시하고 TabBar의 프로그램 숨김을 제거하는 것이 더 낫지 않습니까? 뭔가 같은 :
DetailViewController *dvc = [[DetailViewController alloc] init];
dvc.hidesBottomBarWhenPushed = YES;
[[self navigationController] pushViewController:dvc animated:YES];
[dvc release];
가 사전에 감사합니다,
밥 B.
비르 질 리오, 귀하의 의견 감사합니다. 슬라이드 업 뷰 (별칭 ThumbView)는 NIB가 아닌 SearchView에서 프로그래밍 방식으로 생성됩니다. 그러나 SearchView NIB에서 상태 표시 줄을 '회색'으로 변경했지만 아무 것도하지 않았습니다. 또한 Info.plist에서 UIStatusBarStyle을 설정하고 Info.plist에서 UIStatusBarHidden을 선택/선택 취소했습니다. UIStatusBarHidden을 확인하면 실제로 20 픽셀 이동이 없지만 상태 표시 줄을 전혀 사용하지 않아도됩니다. 내 앱과 내가 모방하려고하는 앱의 스크린 샷을 이메일로 보냈습니다. –
<계속> 나는 원래의 출처가 잘못되었습니다. 게시하다; 에뮬레이트하는 앱은 실제로 테이블 뷰입니다. 테이블에서 셀을 선택하면 화면의 아래쪽 절반을 덮는 선택기보기가 위로 이동하여 사용자는 화면의 위쪽 절반에있는 세 개의 셀 중 하나를 동적으로 선택할 수 있습니다. 귀하의 의견과 시간에 감사드립니다. 필자는 테이블 구동 대신 앱 구동 버튼을 사용하여 차이를 만들어야한다고 생각하지 않습니다.하지만 그것은 내 부분에 대한 가정입니다. 다시 고맙습니다. -Bob B. –