2017-02-08 3 views
0

Ich versuche, die Höhe der Tabellenansicht in meinem Projekt automatisch anzupassen, indem Sie bestimmen, welche Art von iPhone der Benutzer hat. Ich bin mir jedoch nicht ganz sicher, wie ich vorgehen würde, um die Höhe anzupassen. Ich habe verschiedene Methoden wie self.tableView.rowHeight = 100 usw. versucht, aber ohne Glück.Adjust tableView Höhe von Code in Swift

Könnte mir bitte jemand in die richtige Richtung zeigen?

Vielen Dank im Voraus.

Table view constraints

Table view constraints

+0

verwenden Sie einen UITableViewController oder ein UIViewController mit einem tableView, den du da selbst hingestellt hast? – Ocunidee

+0

@Ocunidee Ich verwende eine Tabellenansicht, die ich in mich selbst gesetzt habe. – askaale

+0

können Sie ein Bild der Einschränkungen anzeigen, die Sie in das Storyboard eingegeben haben, oder, wenn Sie Code erstellt haben, die Snippets? – Ocunidee

Antwort

0

Bitte diese zwei Delegatmethode von Tableview in Ihrem View-Controller

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 
1

Zuerst eine Erweiterung erstellen zu erkennen, welche iPhone läuft die App:

extension UIDevice { 
    var iPhone: Bool { 
     return UIDevice().userInterfaceIdiom == .phone 
    } 
    enum ScreenType { 
     case iPhone4 
     case iPhone5 
     case iPhone6 
     case iPhone6Plus 
     case unknown 
    } 
    var screenType: ScreenType { 
     guard iPhone else { return .unknown } 
     switch UIScreen.main.nativeBounds.height { 
     case 960: 
      return .iPhone4 
     case 1136: 
      return .iPhone5 
     case 1334: 
      return .iPhone6 
     case 2208: 
      return .iPhone6Plus 
     default: 
      return .unknown 
     } 
    } 
} 

Dann in yo ur-Controller verbinden die Tableview delegieren, wenn Sie es noch nicht getan:

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
    tableView.dataSource = self 
} 

Implementieren Methode delegieren wie so Höhe von Zelltyp abhängig von iphone anzupassen:

extension YourViewController: UITableViewDelegate { 
    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     switch UIDevice().screenType { 
     case .iPhone4: 
      return 40 
     default: 
      return 60 
     } 
    } 
} 
+0

Vielen Dank dafür, aber ich bin wirklich auf der Suche nach einer Möglichkeit zur Anpassung der Tischhöhe, nicht die Zelle. Wie auch immer, das ist brilliant und danke fürs Teilen! Ich schätze Ihre Hilfe! – askaale

+0

Sie sagten gerade das Gegenteil in einem vorherigen Kommentar .. bitte seien Sie genauer was Sie brauchen. :) –

+0

Es tut mir leid, wenn ich nicht klar war, was ich meinte war; Wenn ich die Höhe jeder Tabellenansichtszelle ändern würde, würde die abgerundete UIB-Schaltfläche innerhalb jeder Zelle verkleinert werden, und es würde nicht gut aussehen. Es tut uns leid! :-) – askaale