2013-02-09 14 views
5

Poniżej jest mój kod z aplikacji delegata w didFinishLaunchingWithOptionsNie można dodać dodatkowy podrzędny do uiwindow oprócz rootviewcontroller

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 

CGRect windowFrame = self.window.frame; 
UIView *bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, windowFrame.size.height-100, windowFrame.size.height, windowFrame.size.height)]; 
bottomView.backgroundColor = [UIColor redColor]; 
[self.window addSubview:bottomView]; 

// self.viewController.view.frame = CGRectMake(0, 0, windowFrame.size.width, windowFrame.size.height-100); 

self.window.rootViewController = self.viewController; 
[self.window makeKeyAndVisible]; 

return YES; 

My ViewController jest FreeForm a jego wysokość wynosi tylko około 245. Jak widać staram się umieścić widok od dołu, który ma 100 punktów wysokości.

Próbuję się tego nauczyć.

Ale widok zawsze wypełnia cały ekran. Jeśli skomentuję ustawienie kontrolera widoku jako rootviewcontroller systemu Windows, widzę tam widok od dołu na ekranie.

Co robię źle? Proszę o poradę.

Dzięki.

+0

Dlaczego chcesz, aby ten widok u dołu był podzbiorem okna, a nie widoku viewController? Co próbujesz osiągnąć? – rdelmar

+0

Próbuję sprawdzić, czy jest możliwe, aby zawsze pasek narzędzi na dole okna, podczas gdy można przełączać widoki viewcontroller. Później zorientowałem się, że łatwo jest mieć jedną zakładkę na dole i zastępować widoki paska zakładek na instancję paska narzędzi. – Saran

Odpowiedz

3

Zamiast

self.window.rootViewController = self.viewController; 

kiedy kod

[self.window addSubview:self.viewController.view]; 

dał mi oczekiwanego rezultatu i reguluje wielkość nieregularnym kształcie.

Pojawia się po ustawieniu jako rootviewcontroller wypełnia cały dostępny ekran, niezależnie od ustawionego rozmiaru swobodnego na XIB.

2

napisać tylko jeden sentance

[self.window bringSubviewToFront: bottomView]; 

LUB

dodać bottomView do okna jako,

[[[[UIApplication sharedApplication] delegate] window] addSubview:bottomView]; 
+0

Ale dlaczego widok viewcontroller o dowolnej postaci ma tylko 245 punktów wysokości zajmując cały ekran? Spodziewam się, że widok viewcontroller zajmuje najwyższą 245-punktową wysokość, a dolny widok zajmuje dolną wysokość 100 punktów i czarny ekran pomiędzy nimi. Czy to nie ma się stać? – Saran

0

Nie jestem pewien, dlaczego starasz się to zrobić, ale ustawienie dowolnego kształtu w IB (przynajmniej w przypadku plików xib) wydaje się mieć wyłącznie charakter układu. Nie wpływa to faktycznie na rozmiar, który dostajesz po załadowaniu widoku. Jeśli chcesz, aby był krótszy, ustaw jego ramkę w metodzie viewDidAppear: w ViewController, a nie w delegacie aplikacji - widok nie został jeszcze załadowany, więc jest za wcześnie, aby ustawić ramkę.

Powiązane problemy