2013-01-12 84 views
0

我一直在使用下面的方法來獲取狀態欄高度。不過,我需要獲取視圖加載時的高度,以便相應地調整我的tableview的高度。在viewDidLoad中使用這種方法返回0.狀態欄高度viewDidLoad

我已經嘗試在viewDidAppear中使用它,但是當我從子視圖(作爲其導航控制器的一部分)返回視圖時,需要高度並再次調整它,每次我回到視圖。

那麼我怎樣才能得到的高度時,視圖加載應用此調整而不會遇到這些問題?

-(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這樣做),請考慮調整contentInset而不是height