2013-02-13 3 views
1

내 AppDelegate 클래스에서 [[UIScreen mainScreen] bounds]만큼 창 프레임을 설정하여 TabBar VC를 만듭니다. 상태 표시 줄이 표시되어 있기 때문에 높이는 460이어야하지만 480 인 것으로 보입니다. 수동으로 높이를 460으로 설정하면 탭의 하단 부분에 터치 인식이 잘립니다. 다음은이 applicationFrame 높이가 460 인 경우 창 480의 높이가 어째서입니까?

2013-02-12 23:04:21.867 SingleTest[24221:c07] appFrame 20.000000 
2013-02-12 23:04:21.868 SingleTest[24221:c07] appFrame 460.000000 
2013-02-12 23:04:21.869 SingleTest[24221:c07] window.frame 0.000000 
2013-02-12 23:04:21.870 SingleTest[24221:c07] window.frame 480.000000 
2013-02-12 23:04:21.870 SingleTest[24221:c07] window.bounds 0.000000 
2013-02-12 23:04:21.871 SingleTest[24221:c07] window.bounds 480.000000 

누군가가 설명 할 수

로그 출력이 차이 뒤에 이유를 제공

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
UIColor *brownNavBarColor = [[UIColor alloc] initWithRed:0.78f green:0.56f blue:0.06f alpha:1.0f]; 
[application setStatusBarHidden:NO]; 

CGRect windowRect = [[UIScreen mainScreen] bounds]; 
self.window = [[UIWindow alloc] initWithFrame:windowRect]; 

CGRect appFrame = [[UIScreen mainScreen] applicationFrame]; 

NSLog(@" appFrame %f", appFrame.origin.y); 
NSLog(@" appFrame %f", appFrame.size.height); 

NSLog(@" window.frame %f", self.window.frame.origin.y); 
NSLog(@" window.frame %f", self.window.frame.size.height); 

NSLog(@" window.bounds %f", self.window.bounds.origin.y); 
NSLog(@" window.bounds %f", self.window.bounds.size.height); 

[self.window makeKeyAndVisible]; 

self.ingredientTabVC2 = [[NewIngredientViewController alloc] initWithNibName:nil bundle:NULL]; 
self.ingredientNC2 = [[UINavigationController alloc] initWithRootViewController:self.ingredientTabVC2]; 
[self.ingredientNC2.navigationBar setTintColor:brownNavBarColor]; 

self.ingredientTabVC3 = [[IngredientTabViewController alloc] initWithNibName:nil bundle:NULL]; 
self.ingredientNC3 = [[UINavigationController alloc] initWithRootViewController:self.ingredientTabVC3]; 
[self.ingredientNC3.navigationBar setTintColor:brownNavBarColor]; 

self.tabBarController = [[UITabBarController alloc] initWithNibName:nil bundle:NULL]; 
self.tabBarController.viewControllers = [[NSArray alloc] initWithObjects: self.ingredientNC2, self.ingredientNC3, nil]; 


[self.window setRootViewController:self.tabBarController]; 
return YES; 
} 

코드는? UIScreen에 대한 문서에서

+0

은 20 – NANNAV

답변

8

:

applicationFrame :이 표시되는 경우

이 속성 화면의 경계를 뺀 상태 표시 줄이 차지하는 영역이 포함되어 있습니다. 이 속성을 사용하면 응용 프로그램의 초기 윈도우 크기를 가져 오는 것이 좋습니다. 사각형은 점으로 지정됩니다.

경계 :

는 점에서 측정 된 화면의 경계 사각형을 포함합니다. (읽기 전용)

bounds에는 applicationFrame이 포함되어 있지 않습니다.

applicationFramey 기원은 20입니다.

주 창을 화면으로 채우기를 원합니다. 윈도우의 rootViewController을 설정하면 자동으로 applicationFrame으로 조정됩니다.

ios 상태 표시 줄 프레임 높이의
+0

입니다. 따라서 applicationFrame을 창 안에 배치하고 rootViewController를 applicationFrame에 맞 춥니 다. – user2066978

+0

예, 맞습니다. – rmaddy

+0

감사합니다. – user2066978