2016-11-21 1 views
0

Wenn ich einen grundlegenden Viewcontroller erstellen und eine undurchsichtige UIToolbar zu der Ansicht hinzufügen, etwa so:Ansicht Resize für Symbolleiste Konto

UIViewController* viewController = [[UIViewController alloc] init]; 
[viewController.view setBackgroundColor:[UIColor blueColor]]; // To make it easy to see 
self.window.rootViewController = viewController; 

UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, viewController.view.frame.size.height - 49, viewController.view.frame.size.width, 49)]; // At bottom. Height of 49 
[toolbar setBarStyle:UIBarStyleBlack]; // Opaque and easy to see 

[self.window.rootViewController.view addSubview:toolbar]; // Add toolbar to view controller 

Die Ansicht Hierarchie endet wie unten nach oben:

View Controller behind Toolbar

Wie kann ich mit dem View-Controller die Größe des Hauptbereichs (der blaue Teil) ändern, damit er sich nicht hinter der UIToolbar erstreckt?

+0

nur die viewController.view verlassen, wie ohne Farbeinstellung ist, fügen Sie eine weitere UIView für blauen Teil – raki

+0

Wäre dies das gleiche sein wie das Hinzufügen der Ansicht von einem anderen Viewcontroller als Subview ? – ABeard89

+0

haben Sie nicht bekommen @ ABeard – raki

Antwort

0

Versuchen Sie diese Codezeile hinzuzufügen

viewController.edgesForExtendedLayout = UIRectEdgeNone; 

dies so ist der Ansicht Controller machen Kanten in jeder Richtung nicht verlängert werden.

Oder Sie können diese hinzufügen, wenn Sie oben erweitern möchten, links und rechts, aber nicht unten.

viewController.edgesForExtendedLayout = UIRectEdgeTop, UIRectEdgeLeft, UIRectEdgeRight; 
+0

Keiner von beiden hatte irgendeine Wirkung. – ABeard89

0

Versuchen Sie, wie dies

UIViewController* viewController = [[UIViewController alloc] init]; 
    [viewController.view setBackgroundColor:[UIColor blueColor]]; // To make it easy to see 
    self.window.rootViewController = viewController; 

UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, viewController.view.frame.size.height - 49, viewController.view.frame.size.width, 49)]; // At bottom. Height of 49 
[toolbar setBarStyle:UIBarStyleBlack]; // Opaque and easy to see 

SecondViewController* secondChildVC = [self.storyboard instantiateViewControllerWithIdentifier:@"someId"]; 
[secondChildVC.view setBackgroundColor:[UIColor redColor]]; 
[viewController addChildViewController:secondChildVC]; 
[secondChildVC didMoveToParentViewController:viewController]; 
secondChildVC.view.frame = CGRectMake(0,0,viewController.view.frame.size.width,viewController.view.frame.size.height - 49); 
[viewController.view addSubview:secondChildVC.view]; 

[self.window.rootViewController.view addSubview:toolbar]; 
+0

Muss ich den Rahmen des zweiten VC berechnen? 'secondChildVC.view.frame = CGRectMake (0,0, viewController.view.frame.size.width, viewController.view.frame.size.height - 49);' Diese Art der Berechnung ist genau das, was ich don Ich will es nicht tun. – ABeard89

+0

Ich möchte, dass der Haupt-VC automatisch die korrekte Größe für den zweiten VC berechnet. Gibt es keine Möglichkeit, dies zu tun? – ABeard89

+0

Mit anderen Worten, ich brauche die Haupt-VC, um wie ein UITabBarController oder ein UINavigationController zu handeln. Beides passt die Größe des Inhaltsbereichs automatisch an, ohne dass er selbst berechnet werden muss. – ABeard89

Verwandte Themen