0

希望第三次幸運:的TabBar和導航欄視圖部分地隱藏

只是試圖獲取內容出現下面導航欄和上面的標籤欄(有沒有它,下面會出現兩種)。

我已經嘗試幾乎所有的東西,無濟於事。

隨着內rootController了下面的代碼,我只是想有一個視圖(紅色邊框,以幫助顯示,如果它的工作):

-(void)viewWillAppear:(BOOL)animated{ 

    [super viewWillAppear:animated]; 

    UIView *view1 = [[UIView alloc] initWithFrame:self.view.frame]; 
    view1.layer.borderColor = [UIColor redColor].CGColor; 
    view1.layer.borderWidth = 2.0f; 
    [self.view addSubview:view1]; 

} 

和設置爲幸福:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 

    self.window.backgroundColor = [UIColor whiteColor]; 

    TSTFirstViewController *rootController = [[TSTFirstViewController alloc] init]; 
    rootController.title = @"Hello World"; 

    UINavigationController *firstRootController = [[UINavigationController alloc] initWithRootViewController:rootController]; 
    NSArray *viewControllers = @[firstRootController]; 

    UITabBarController *tabBar = [[UITabBarController alloc] init]; 
    tabBar.viewControllers = viewControllers; 
    tabBar.tabBar.barStyle = UIBarStyleBlack; 
    tabBar.tabBar.translucent = NO; 

    [self.window setRootViewController:tabBar]; 

    [self.window makeKeyAndVisible]; 
    return YES; 
} 

我得到:

enter image description here

如果我添加兩個行我AppDelegate

firstRootController.navigationBar.translucent = NO; 
firstRootController.navigationBar.barStyle = UIBarStyleBlack; 

這一切都變得非常混亂:

enter image description here

的紅色邊框下移,底部邊框消失的標籤欄下方。並出現一個大的空白。

如果我刪除了半透明線,並添加:

self.edgesForExtendedLayout = UIRectEdgeNone; 

到視圖控制器,我得到:

enter image description here

半透明的酒吧,在正確的位置紅色邊框導航欄下,但tabBar下方的下邊框。

我相信我已經嘗試過所有的組合和所有的想法。

任何人都可以請告訴我如何讓內容適合在導航欄下面,在標籤欄之上而不使用Interface Builder。

在此先感謝。

回答

2

是的,這裏是你的解決方案。

當您使用self.edgesForExtendedLayout = UIRectEdgeNone;笑納iOS中7三個事情

  1. 你有NavigationBar
  2. 您得到了Status Bar(時間,網絡,電池顯示頂部)
  3. 您正在考慮TabBar以及。

所以你的實現應該從實際視圖高度減去導航欄的高度,狀態欄的tabbar。

UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height-self.navigationController.navigationBar.frame.size.height-self.navigationController.tabBarController.tabBar.frame.size.height-[UIApplication sharedApplication].statusBarFrame.size.height)]; 
view1.layer.borderColor = [UIColor redColor].CGColor; 
view1.layer.borderWidth = 2.0f; 
[self.view addSubview:view1]; 

這是使用此代碼的附加屏幕。

Screen Shot is attached here

我希望幫助。

+0

非常感謝您的幫助......但我不禁想知道是否有比這更容易的東西?我會認爲使用'self.edgesForExtendedLayout'可以使視圖適合,而不必計算所有單個組件的高度。 – Darren