2017-04-05 39 views
1

Ich habe eine Tabellenansicht, die Tabellenansicht Zellen und eine Header-Ansicht (Suchleiste) anzeigt. Ich möchte die Breite der Tabellenansicht Zellen 0,9 der Gerät Bildschirmgröße, und die Header-Ansicht, um die gleiche Größe haben. Dies ist jedoch nicht möglich, da Zellen und die Header-Ansicht alle in einer Tabellenansicht enthalten sind.Größe der Tabellenansicht Zelle und Tabellenansicht Header-Ansicht

Wenn ich Layout-Anker Einschränkungen verwenden, wird alles in der Größe geändert (einschließlich der Header-Ansicht).

self.tableView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true 

// here's the 0.9 multiplier 
self.tableView.widthAnchor.constraint(equalTo: self.view.widthAnchor, multiplier: 0.9).isActive = true 
self.tableView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true 
self.tableView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: 0).isActive = true 

Wie kann ich sicherstellen, dass die Tabellenansicht Kopf die gleiche Breite des View-Controller hat, während die Breite der Tabellenansicht zu halten 0.9 der Hauptansicht zu sein?

+0

Ich würde versuchen, die erstellen Header mit konstanter Breite (die Breite des ViewControllers) und setzen Sie dann die 'clipsToBounds' -Eigenschaft Ihrer TableView auf' false'. Nicht sicher, dass es funktioniert, aber einen Versuch wert. –

+0

Warum nicht einfach Ihren Tisch auf die Breite des Bildschirms bringen ... machen Sie Ihre Header-Ansicht die volle Breite ... und dann machen Sie Ihre Zellen 0.9 der Breite? – DonMag

+0

@DonMag Danke. Das Problem ist, dass ich nicht weiß, wie ich meine Zellen 0,9 der Breite machen soll. Ich habe keinen Weg oder eine Methode gefunden, dies zu tun. – Cesare

Antwort

1

Ihre individuelle Zelle „beginnt mit“ a InhaltAlle, die verwendet verwendet die Einsätze der Tabellenansicht seine Breite zu setzen ...

Also, wenn Sie ein paar Elemente/Objekte, die Sie hinzufügen zum Inhalt Ansicht ...

Ihre beste Wette Standard UIView als „Container Ansicht“ ... (nur meine Benennung von it) ...

Dann setzen, um wahrscheinlich zuerst hinzuzufügen, ist die Zwänge auf dieser "enthaltenden Ansicht" soll 0,9 der Breite der contentView sein ...

Alle Elemente Sie zu dieser „enthält Ansicht“ hinzufügen wird relativ zu dieser eingeschränkt werden und somit innerhalb der 0,9-Breite alle bleiben insgesamt ...

1

Es ist am besten, nicht zu versuchen, die Beschränkungen eines TableViewCell oder seiner contentView anzupassen. Sie können jedoch beide Ansichten so einstellen, dass sie eine Hintergrundfarbe von .clear haben, und dann Unteransichten zu contentView mit den gewünschten Einschränkungen hinzufügen.

class CustomCell: UITableViewCell { 

    let smallerView = UIView() 
    override init(frame: CGRect) { 
     super.init(frame) 
     smallerView.translatesAutoresizingMaskIntoConstraints = false 
     contentView.addSubview(smallerView) 
     smallerView.widthAnchor.contraint(equalTo: contentView.widthAnchor, multiplier: 0.9).isActive = true 
     smallerView.heightAnchor.contraint(equalTo: contentView.heightAnchor).isActive = true 
    } 
} 
+0

Sorry, ich verstehe es nicht. Soll ich die Tabellenansichtszelle zum 'smallView' hinzufügen? – Cesare

+1

Sie müssen eine benutzerdefinierte Tabellenansichtszelle erstellen und jeder Zelle kleinereViews hinzufügen. Siehe mein Update – dmorrow

Verwandte Themen