2017-10-04 8 views
0

Ich bin wirklich bummed, weil ich gerade diese App im App Store veröffentlicht, und jetzt, dass ich auf Xcode 9 aktualisiert habe, hat eine Tabellenansicht, die ich hatte, jetzt Probleme. Die alte Tabellenansicht, in iOS 10, platziert die Zelle um 100 Koordinaten unter dem oberen Rand der Tabellenansicht, sodass ich Beschriftungen und Zeug oberhalb der Tabellenansicht hinzufügen konnte, wobei die Zellen unterhalb von ihnen beginnen, aber dann unter ihnen gescrollt werden können . Aber jetzt, wenn ich die App auf einem ios11-Simulator laufe, wird der Tableview-Header gelöscht, aber wenn ich es auf meinem eigenen Telefon starte, tut es das nicht. Ich habe keinen Code festgelegt auf den Header der Tableview zu bestimmen, und das ist mein aktueller Code:Xcode 9 Tableview Größe ändern

myTableView.frame = CGRect(x: 0, y: 110, width: self.view.frame.width, height: self.view.frame.height - 140) 

und ist ein Foto, um es zu visualisieren: https://imgur.com/a/I4iMo

Ich brauche die Tableview zu bekommen zu sein gleich der Tabellenansicht im iPhone 6s und nicht im Simulator

+0

Sehr verwirrend, wie Sie Xcode 9 und iOS 10 und iOS 11 und "mein eigenes Telefon" erwähnen. Solltest du sagen, dass es mit Xcode 8 sowohl auf iOS 10 als auch auf iOS 11 funktioniert hat, aber wenn du mit Xcode 9 erstellst, funktioniert es nur auf iOS 10 und nicht auf iOS 11? In beiden Fällen sollten Sie "myTableView.frame = ..." nicht * nur * verwenden, wenn Sie entscheiden, wo das TableView sein soll. Sie sollten Constraints verwenden oder das Storyboard das automatische Layout für Sie verwenden lassen. Wenn Sie mit Code arbeiten, haben Sie keine Ahnung, was verschiedene Bildschirmgrößen tun. Meine Vermutung ist, dass das neue 'safeArea'-Ding deine Sachen bewegt, aber schwer zu sagen durch diese unklare Frage. – Sti

Antwort

0

Versuchen Sie, die genaue Zeile des Codes innerhalb viewDidLayoutSubviews setzen.

Setzen Sie dies in Ihren ViewController.

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    myTableView.frame = CGRect(x: 0, y: 110, width: self.view.frame.width, height: self.view.frame.height - 140) 
} 

Es ist sehr schlecht Codierung mit konstanten Größen wie Sie tun. Sie sollten stattdessen einen TableHeader oder eine Integritätsbedingung UIView über der TableView erstellen - wobei die Höhe dieser UIView auf der Größe ihres Inhalts basiert. Was passiert in Ihrem Code, wenn der Benutzer in Accessibility größere Schriftarten einschaltet? Der Text könnte außerhalb 100pt Ansicht ..

wachsen Wenn mein Code nicht funktioniert, versuchen einige der neuen safeArea-Variablen, zB:

myTableView.frame = CGRect(x: 0, y: 110+self.view.safeAreaInsets.top, width: self.view.frame.width, height: self.view.frame.height - 140) 

mit dem safeAreaInsets Spielen Sie herum, bis Sie verstehen, was tun sie.