2013-09-04 9 views
18

Aktualnie przechodzę przez moją aplikację do systemu iOS 7 (chcę, aby pozostała zgodna z systemem iOS 6). To pytanie nie jest objęte przez NDA firmy Apple, jest to pytanie dotyczące automatycznego układu (wydaje się, że iOS 7 wymusza automatyczny układ (EDYCJA: była zła, nie jest wymuszona)).Automatyczny układ z paskiem nawigacyjnym i kontrolerem widoku (iOS 7)

Mam kontroler nawigacyjny z kontrolerem widoku root (oczywiste). W systemie iOS 6 nie korzystałem z funkcji automatycznego układu, dlatego kontrolery widoku root znajdowały się poniżej paska nawigacji. W systemie iOS 7 początek ramki nie zawiera paska nawigacji, więc górna część mojej zawartości jest ukryta ...

Masz pomysł, jak zrobić cały widok nad paskiem nawigacji za pomocą funkcji automatycznego układu?

Dzięki!

+0

Może się mylę, ale byłbym zaskoczony, jeśli Apple „zmuszony "programiści używają automatycznego układu w iOS7? Czy to na pewno tak jest? (ta informacja może być objęta NDA!) – bennythemink

+0

Autolayout nie jest wymuszony w iOS 7. Został ulepszony. –

+0

Jest wymuszony. nie wspomniano w dokumencie. Sprawdź wartości klatek przed viewDidLoad i viewDidAppear. Nie używam IB, ale wartości nadal się różnią. Co to sugeruje? !! –

Odpowiedz

22

Na iOS 7 masz topLayoutGuide, który określa pasek nawigacji. Następnie możesz określić, że ograniczenie widoku table jest w topLayoutGuide, a nie superview.

To pomoże Ci wiedzieć, czy to iOS7 czy nie:

if ([self respondsToSelector:@selector(topLayoutGuide)]) 

więc może być coś takiego

NSString *verticalConstraint = @"V:|[v]|"; 
NSMutableDictionary *views = [NSMutableDictionary new]; 
views[@"v"] = self.tableview; 
if ([self respondsToSelector:@selector(topLayoutGuide)]) { 
    views[@"topLayoutGuide"] = self.topLayoutGuide; 
    verticalConstraint = @"V:[topLayoutGuide][v]|"; 
} 
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:verticalConstraint options:0 metrics:nil views:views]]; 
[self.view addConstraints:constraints]; 
+1

do kompilacji na ios 6, self.topLayoutGuide muszą być [self valueForKey: @ "topLayoutGuide"] (testowane na iOS 7 GM) –

+0

@kschaeffler może wyjaśnić składnię @ ": [topLayoutGuide] [v] | "? Przechodzę przez artykuł na temat języków w formacie wizualnym, ale wciąż jestem nieco zdezorientowany. Myślę, że to mówi, że Vertical jest powiązany z topLayoutGuide, ale ... Edit: * Flash - żarówka gaśnie * Nieważne, myślę, że rozumiem. Początkowy V: mówi, że ustawiasz pionowy układ, a następnie [obiekt1] [obiekt2] mówi, że obiekty 1 i 2 są wyrównane - w prawo względem siebie. Tylko nie wiem, co | robi. – RonLugge

+0

OK, odkąd sam to wymyśliłem, po prostu opublikuję krótkie wyjaśnienie: część "V:" modyfikuje to tak, że wykonujesz pionowy układ. [TopLayoutGuide] działa jako odniesienie do przewodnika po topografii dostarczonego przez widok, który jest umieszczony w jednej linii z wyeksponowaniem, reprezentowanym przez [v]. Rura zamykająca oznacza, że ​​krawędź widoku jest na równi z końcem widoku. Raz zrozumiany, bardzo przejrzysty i piękny język układu, jeśli na początku trudno go zrozumieć. – RonLugge

Powiązane problemy