ios7下使用presentViewController會出現ViewController遮擋住狀態欄的問題

tags:    時間:2013-12-03 18:41:28
ios7下使用presentViewController會出現ViewController遮擋住狀態欄的問題

         TCWBRebroadcastMsgViewController *tCWBRebroadcastMsgViewController = [[TCWBRebroadcastMsgViewController alloc] initWithEngine:self parameter:dic];
         UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:tCWBRebroadcastMsgViewController];
         [rootViewController presentViewController:nvc animated:YES completion:nil];
 


在IOS7下會出現如下問題,怎麼解決?

------解決方案--------------------
樓主應該是代碼寫的UI吧?從iOs7開始,{0,0}為屏幕最左上角點,包括了狀態欄,所以你可以預定義一個變數:
#define UI_DEFAULT_ORIGIN_Y (IS_IOS_7 ? 64.0f : 0.0f)
------解決方案--------------------
引用 1 樓 sinom 的回復:
樓主應該是代碼寫的UI吧?從iOs7開始,{0,0}為屏幕最左上角點,包括了狀態欄,所以你可以預定義一個變數:
#define UI_DEFAULT_ORIGIN_Y (IS_IOS_7 ? 64.0f : 0.0f)

不是啊,那你導航條怎麼辦?
你的視圖是從下彈出的,不是PUSH進來的。導航條頂到最上面去了,怎麼改他得位置?
------解決方案--------------------
 嗯,我也才發現這個問題,你是直接設置navigationBar的backgroundimage是吧?現在我試了改成:
UIImageView *imageView = [[[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.view.width, 45.0f)] autorelease];
    imageView.image = [UIImage imageNamed:@"top_bg"];
    [self.navigationController.navigationBar addSubview:imageView];
但感覺這樣做並不好,比如這樣會蓋著title,正在找更好的辦法
------解決方案--------------------
主要是原來的程序與ios7版本兼容的問題,你可以嘗試加上下面的代碼

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
     {
         self.edgesForExtendedLayout = UIRectEdgeNone;
         self.extendedLayoutIncludesOpaqueBars = NO;
         self.modalPresentationCapturesStatusBarAppearance = NO;
         self.automaticallyAdjustsScrollViewInsets = YES;
     }
 #endif
------解決方案--------------------

#define IsIos7 ([[[UIDevice currentDevice] systemVersion] doubleValue]>=7.0)

  -(void)shipeiForIos7
{
    if (IsIos7) {
        self.edgesForExtendedLayout = UIRectEdgeNone;
    }
}
在.plist中設置這個屬性Status bar style為Transparent black style(alpha of 0.5);應該就沒問題了,lz可以試試看行不行。

推薦閱讀文章

Bookmark the permalink ,來源:互聯網