2013-01-12 4 views
0

나는 아래의 방법을 사용하여 상태 표시 줄 높이를 얻었습니다. 그러나 나는 뷰 뷰의 높이를 적절히 조정할 수 있도록 뷰가로드 될 때 높이를 가져와야합니다. viewDidLoad에서이 메서드를 사용하면 0이 반환됩니다.상태 표시 줄의 높이 viewDidLoad

작동하는 viewDidAppear에서 사용하려고했으나 하위 뷰 (nav 컨트롤러의 일부분)에서 뷰로 돌아 왔을 때 높이를 가져 와서 다시 조정합니다. , 내가보기로 돌아올 때마다.

그렇다면 이러한 조정을 적용하지 않고이 조정을 적용하기 위해 뷰를로드 할 때 높이를 어떻게 얻을 수 있습니까?

-(CGRect)statusBarFrameViewRect 
{ 
    CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame]; 

    CGRect statusBarWindowRect = [self.view.window convertRect:statusBarFrame fromWindow: nil]; 

    CGRect statusBarViewRect = [self.view convertRect:statusBarWindowRect fromView: nil]; 

    return statusBarViewRect; 
} 

감사합니다.

답변

2

상태 표시 줄과 탐색 표시 줄의 높이를 모두 -viewDidLoad으로 얻을 수있었습니다. 이 새보기를로드하는 동안 상태 표시 줄을 전환하는 경우 UIApplicationWillChangeStatusBarFrameNotification에 등록 할 수 있습니다. 나는 심지어 내가 개별 뷰는 특히, 상태 표시 줄을 걱정 할 필요가 없게하는 기대, 여담으로 -[appDelegate application:didFinishLaunchingWithOptions:]

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame]; 
    // (CGRect) $1 = origin=(x=0, y=0) size=(width=320, height=20) 
    CGRect navBarFrame = self.navigationController.navigationBar.frame; 
    // (CGRect) $2 = origin=(x=0, y=20) size=(width=320, height=44) 
} 

에 상태 표시 줄 프레임을 얻을 수 있습니다, 그래서 이것은 당신이를 사용하고있는 생각하는 날 리드 상태 표시 줄을 오버레이로 표시합니다. 이 경우 (Photos.app에서는이 경우) height 대신 contentInset을 조정하는 것이 좋습니다.

관련 문제