티스토리 뷰

iOS/에라고만...

[iOS7] Statusbar 20pixel 겹치는 문제 해결하기.

감성개발자 썩소천사 2013. 12. 20. 11:10
반응형

iOS7 에서 메일보내기나 동영상 재생등의 전체 화면으로 처리되는것들을 호출하게 되면 상단 statusbar가 겹치는 문제가 발생하게 된다.

이를 해결하기 위해서 해당 이벤트를 종료시켰을 경우 프레임을 다시 조정해 주었다.

화면 구조는 window에 navigationController을 addSubView한 형태로 개발되었으며 이후 추가되는 화면에 대해서는

[self.navigationController pushViewController:??] 구조로 구성하였다.


info.plist에서 View controller-based status bar appearance 속성은 NO로 설정하였다.


1. appdelegate 에서 Y값을 0에서 20으로 수정하였다.

self.window.frame = CGRectMake(0, 20, 320, 460);


2. 화면이 다시 겹쳐지는 이벤트가 종료될 때 다시 프레임을 재 조정해주었다.

if(g_app.naviController.view.bounds.size.width == 320 & g_app.naviController.view.bounds.size.height == 480 ){

[g_app.naviController.view setFrame:CGRectMake(0, 0, 320, 480)];

[g_app.naviController.view setBounds:CGRectMake(0, -20, 320, 480)];

}else if(g_app.naviController.view.bounds.size.width == 320 & g_app.naviController.view.bounds.size.height == 568 ){

[g_app.naviController.view setFrame:CGRectMake(0, 20, 320, 480)];

[g_app.naviController.view setBounds:CGRectMake(0, -44, 320, 480)];

}else if(g_app.naviController.view.bounds.size.width == 768 & g_app.naviController.view.bounds.size.height == 1024 ){

[g_app.naviController.view setFrame:CGRectMake(0, 0, 768, 1024)];

[g_app.naviController.view setBounds:CGRectMake(0, -20, 768, 1024)];

}


3. 2번과 같이 했을경우 계속 문제가 발생한다면 window 크기를 조정해주면 된다.

self.window.frame = CGRectMake(020320460);


혹 화면의 상태바가 배터리만 표시된체 나오지 않는다면 강제로 색상값을 지정해 주어도 된다.

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; //iOS7




반응형
댓글
댓글쓰기 폼
공지사항