2013-02-08 1 views
2

iOS6에 나타난 것처럼 보이는 탐색 표시 줄 위치 지정 문제가 있습니다.
그것은이 앱은 시작 화면이 일부보기상태 표시 줄을 추가 한 후 탐색 막대의 위치가 변경되지 않습니다.

를 회전 할 때 일부 사용자가 경험하고있는 proplem와 유사한 여러 가지 방법으로 역할에 viewDidLoad

다음 (Hide statusbar during application launchTrue로 설정하여 달성) 전체 화면 표시 내

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; 

이것은 응용 프로그램의 상태 표시를 추가하고, 예상대로 아래 20pt를보기를 이동 : 마스터 뷰 컨트롤러는 다음 행은 다시 응용 프로그램에 상태 표시 줄을 추가합니다. 그러나 NavigationBar는 상태 표시 줄 아래에 20pt 글리치가있는 채로 있습니다.

The glitch created by adding statusBar

는 iOS6의 전에 나는 다음 코드 줄을 추가하여이 문제를 해결하는 데 사용 :

이제
[UIApplication sharedApplication].keyWindow.frame=CGRectMake(0, 20, 320, [[UIScreen mainScreen] bounds].size.height-20); 

그러나이 작동하지 않습니다.

일부 연구에 따르면 viewDidLoad을 호출 할 때 크기와 출처가 모두 {0,0}이며의 크기와 원점은 모두 변경되지 않으며 변경 사항이 적용되지 않는다는 것을 보여줍니다.

위의 두 줄을 viewDidAppear에 삽입하면 응용 프로그램이 시작될 때와 동일한 동작이 발생합니다. 그러나 다른보기로 이동하여 첫 번째보기로 돌아 가면 keyWindow.frame의 변경이 원하는 효과를 가져오고 NavigationBar가 있어야만 위치에 배치됩니다.

다음 내 질문 : NavigationBar를 만들려면 StatusBar가 처음에 숨겨 졌을 때 StatusBar를 iOS-app에 추가 한 후 올바른 위치에 있어야합니다.

답변

1

내가 다시 직장에서 asleap 해요 것 같다 :

상태 표시가 이미 viewDidLoad에서 호출에 의해 표시되기 때문에 적용되지 않는 다른 방법 (view[Will|Did]Appear)에서 일을하는 효과. 코드를 제거한 다음 viewDidAppear에서 원하는 효과를 얻었습니다. 이전에 호출 된 모든 메소드는 하위 프레임을 변경하지 않습니다. (viewDidLoad 또는 viewWillAppear[UIApplication sharedApplication].keyWindow.frame의 프레임을 변경하지 않습니다.

따라서 viewDidAppear에서 수행해야합니다. 상태 표시 줄이 전에 호출 된 일부 메소드에 이미 표시되지 않았는지 확인하십시오.

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO]; 
    [UIApplication sharedApplication].keyWindow.frame=CGRectMake(0, 20, 320, [[UIScreen mainScreen] bounds].size.height-20); 
} 
1

대신 setWillAppear에서 setStatusBarHidden : NO를 호출하십시오.

+0

시도했습니다. 모든보기에 새임 효과 [Will | Did] [Appear | Load] 방법. – mariusnn

+0

이상한, 정확히 같은 문제와 [[UIApplication sharedApplication] setStatusBarHidden : 예 withAnimation : UIStatusBarAnimationSlide]가 작동했지만 viewWillAppear에서만 발생했습니다 – elk

+0

알 수 있습니다. 이것은 내가 어리석은/피곤한 다시입니다. 'setStatusBarHidden : NO'가 여전히'wiewDidLoad' 메쏘드에 있었기 때문에 후속 호출은 다른 방식으로 행동했습니다.내가 작업 한 유일한 장소는'viewDidAppear'와 두 호출 모두였습니다 (뷰의 프레임은 statusBar를 호출 할 때 조정되지 않았고 마지막 호출에서 반응이있었습니다 (' viewDidAppear') – mariusnn