[iOS] View의 위치가 어긋나는 경우
XCode를 Window Based 프로젝트로 시작하여 직접 ViewController를 하나 만들어서 루트윈도우에 붙였을 때 뷰의 위치가 어긋나는 경우가 있다. 정확히는 스테이터스바(StatusBar, 화면 최상단의 시계 및 배터리 정보 등이 표시되는 막대) 크기 만큼 뷰가 위로 올라와서 붙은 경우이다. 이 경유 뷰의 최상단이 스테이터스바에 일부분 가려지게 되어서 문제가 된다.
View Based 프로젝트의 경우에는 이런 문제가 안생기는데 이유는 잘 모르겠다.
이 문제를 수동으로 해결하려면 화면이 보이는 프레임을 구해서 직접 뷰의 크기를 지정해 버리는 방법이 있다.
실제 Application Delegation 코드에서는 이런 식으로 쓸 수 있겠다. 이 코드에서 SomeUIViewController가 붙이려는 뷰컨트롤러이다.
View Based 프로젝트의 경우에는 이런 문제가 안생기는데 이유는 잘 모르겠다.
이 문제를 수동으로 해결하려면 화면이 보이는 프레임을 구해서 직접 뷰의 크기를 지정해 버리는 방법이 있다.
CGRect r = [[UIScreen mainScreen] applicationFrame];이 코드 한줄로 정확한 프레임 위치 및 크기를 알 수 있다.
실제 Application Delegation 코드에서는 이런 식으로 쓸 수 있겠다. 이 코드에서 SomeUIViewController가 붙이려는 뷰컨트롤러이다.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. CGRect r = [[UIScreen mainScreen] applicationFrame]; SomeUIViewController *vc = [[SomeUIViewController alloc] initWithNibName:@"SomeUIViewController" bundle:nil]; [vc.view setFrame:r]; [self.window addSubview:vc.view]; [self.window makeKeyAndVisible]; return YES; }가끔 네비게이션바의 경우도 이런 현상이 생기던데 비슷하게 해결할 수 있을까?
댓글