CGRect cgRect1 = [[UIScreen mainScreen] applicationFrame];
UISearchBar *mySearchBar = [[UISearchBar alloc]
initWithFrame:CGRectMake(0, 0, cgRect.size.width, 40)];
mySearchBar.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight ;
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectMake(0, 40, cgRect.size.width, cgRect.size.height-40)];
myTableView.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
[self.view addSubview:mySearchBar];
[self.view addSubview:myTableView];
In den früheren Versionen funktioniert es korrekt. Die Suchleiste wird unter der statusbar
Navigationsleiste und angezeigt. Das tableview
wird unter der Suchleiste angezeigt
Aber wenn ich dies ausführe Xcode 5 sdk iOS 7
, ist die Suchleiste nicht sichtbar (ich denke, sie befindet sich unter der Statusleiste und der Navigationsleiste), und auch die Navigationsleiste wird über der Tabellenansicht angezeigt.
Wird es mit iOS 7
stabiler Freigabe behoben ?
Oder ist es das Problem meiner Codierung?
Oder sollten wir damit umgehen, indem wir den y- (y = statubar height + nav bar height)
Wert für addieren iOS 7
?
Ich habe kürzlich Xcode 5 DP heruntergeladen, um meine Apps in iOS 7 zu testen. Als erstes habe ich festgestellt und bestätigt, dass die Größe meiner Ansicht nicht immer geändert wird, um die Statusleiste und die Navigationsleiste zu berücksichtigen.
In viewDidLayoutSubviews drucke ich die Grenzen der Ansicht:
{{0, 0}, {320, 568}}
Dies führt dazu, dass mein Inhalt unter der Navigationsleiste und der Statusleiste angezeigt wird.
Ich weiß, dass ich die Höhe selbst erklären kann, indem ich die Höhe des Hauptbildschirms erhalte, die Höhe der Statusleiste und die Höhe der Navigationsleiste subtrahiere, aber das scheint unnötige zusätzliche Arbeit zu sein.
Hat jemand anderes dieses Problem erlebt?
AKTUALISIEREN:
Ich habe eine Lösung für dieses spezielle Problem gefunden. Setzen Sie die durchscheinende Eigenschaft der Navigationsleiste auf NO:
self.navigationController.navigationBar.translucent = NO;
Dadurch wird verhindert, dass die Ansicht unter der Navigationsleiste und der Statusleiste eingerahmt wird.
Ich habe jedoch keine Lösung für den Fall gefunden, dass die Navigationsleiste durchscheinend sein soll. Wenn Sie beispielsweise ein Foto im Vollbildmodus anzeigen, möchte ich, dass die Navigationsleiste durchscheinend ist und die Ansicht darunter eingerahmt wird. Das funktioniert, aber wenn ich das Ein- und Ausblenden der Navigationsleiste umschalte, habe ich noch seltsamere Ergebnisse erzielt. Die Grenzen der ersten Unteransicht (a UIScrollView
) werden jedes Mal geändert.