2016-04-22 11 views
0

Ich benutze Tableview in iOS 9, Swift 2 Ich verstehe nicht, warum, wenn ich eine Tabellenansicht mit einfachen Zellen erstellen, bekomme ich eine falsche Breite der Contentview, auch wenn ich Container festlegen Sicht auf 1000. Die Zellenbreite ist genau 1000, aber die textLabel innerhalb ist weniger als 1000. Auch Separatoren sind zentriert und mit falscher Breite.UITableViewCell falscher Inhalt Breite

Wie kann ich meine Zellen richtig angezeigt bekommen und die gesamte Containeransicht abdecken?

Alles wird programmgesteuert erstellt.

Hier ist mein Code:

if tableView == nil { 
     tableView = UITableView(frame: CGRect(x: 0, y: 44/*88*/, width: self.view.bounds.size.width, height: self.view.bounds.size.height - 44/*88*/), style: UITableViewStyle.Plain) 
     tableView!.delegate = self 
     tableView!.backgroundColor = .clearColor() 
     tableView!.dataSource = self 
     tableView!.rowHeight = 40.0 
     tableView!.allowsSelection = false 
     tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell") 

     view.addSubview(tableView!) 

     tableView!.reloadData() 
    } 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    var MyIdentifier: String = "MyReuseIdentifier" 
    var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier(MyIdentifier) 
    if cell == nil { 
     cell = UITableViewCell(style: .Default, reuseIdentifier: MyIdentifier) 
    } 
    cell!.textLabel!.text = "Test" 
    cell!.backgroundColor = .clearColor() 
    cell!.textLabel!.textColor = .blackColor() 
    return cell! 
} 
+0

Ist Ihr Containeransicht Hauptansicht Controller 'view'? –

+0

Versuchen Sie, die Rahmenwerte von "textLabel" zu aktualisieren. – BobGao

+0

Hier ist die Hierarchie: - ViewController (nicht Haupt, aber ein anderer) mit einer eigenen Ansicht - TableView, das ist eine Unteransicht der Viewcontroller Ansicht. – yax

Antwort

0

während die Breite der Breite der gesamten Ansicht ist, die Zellen, ist es Inhalt Ansicht auf allen Seiten nach innen versetzt wird (glaube ich) 8 Punkte, so macht es Sinn, für die Beschriftung nicht über den gesamten Bildschirm hinweg

Um eine Beschriftung zu erhalten, die sich über die gesamte Breite des Bildschirms erstreckt, erstellen Sie eine benutzerdefinierte Zellklasse und fügen dem Etikett Einschränkungen hinzu, um dies zu berücksichtigen. (Label-führendem zum Inhalt Ansicht führenden = -8,0)

0

Sie können prüfen,

tableView.contentInset 

Und dann links Einsatz aktualisieren. Überprüfen Sie außerdem, ob Sie keine Einschränkung wie leadingSpace angegeben haben. Oder Rand zum UITableView selbst. Ebenso haben Sie

cell.separatorInset 

standardmäßig ein Auffüllen von 5 gelassen wird, so machen diese 0.

+0

versuchte beide, nicht funktioniert .. Ich sehe nur Trennzeichen zwischen den Zellen, die jetzt das Ende der Zelle erreichen ... aber die textLabel ist immer noch "zentriert", und nicht von x = 0 – yax

+1

dann versuchen, LayoutMargins, tableView.CellLayoutMarginsFollowReadableWidth = NEIN; Wenn dies für ios 9 spezifisch ist. – user3300864

2
tableView!.cellLayoutMarginsFollowReadableWidth = false 

Dies ist die Lösung!

Es ist nicht notwendig contentInsets zu setzen.

Verwandte Themen