Wie in der Abbildung unten gezeigt, notieren Sie sich die Methode, wenn Sie die Anzeige / Nichtanzeige des oberen Randes abhängig von der Bedingung in "UITableView", in der "Stil" gruppiert ist, umschalten möchten.
Randanzeige | Ränder ausblenden |
---|---|
Dieses Mal wollte ich den Rand entfernen, wenn der Header wie das Bild angezeigt wird, und den Rand haben, wenn der Header nicht angezeigt wird. .. ..
Das Muster, das vorerst nutzlos war. .. .. Wie unten gezeigt, setze ich den Header in Abschnitt 0 und die Höhe, wenn "isHeaderShown" "true" ist.
extension TableViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
guard section == 0 else {
return UITableView.automaticDimension
}
return isHeaderShown ? 50 : UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
guard section == 0 else {
return nil
}
return isHeaderShown ? HeaderView() : nil
}
}
Ergebnis
Nur die erste Anzeige ist gut, aber die zweite und die folgenden Zeiten sind seltsam. .. .. : Stirnrunzeln2:
Oben Methode + Ich habe versucht, mit tableHeaderView
zu spielen, als ich die Tabelle wie unten gezeigt aktualisiert habe.
tableView.tableHeaderView = isHeaderShown ? UIView() : nil
tableView.reloadData()
Ergebnis
Verstanden: tada:
Es scheint, dass die obige Methode verwendet werden kann, aber wenn Sie den Header zuerst nur oben setzen, dachte ich, dass es nicht notwendig ist, View in sectionHeader zu setzen, und schließlich tat ich Folgendes.
extension TableViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
guard section == 0 else {
return UITableView.automaticDimension
}
return isHeaderShown ? CGFloat.leastNormalMagnitude : UITableView.automaticDimension
}
}
//Verarbeitung zum Zeitpunkt der Aktualisierung
tableView.tableHeaderView = isHeaderShown ? HeaderView(frame: .init(origin: .zero, size: .init(width: 0, height: 50))) : nil
tableView.reloadData()
Das Ergebnis war das gleiche wie in Muster 1, also ist es vielleicht in Ordnung: klatschen:
Ich denke, es ist selten, ein solches Layout haben zu wollen, aber ich hoffe, es hilft jemandem. Wenn Sie einen anderen guten Weg kennen, lassen Sie es mich bitte wissen: beten Sie:
Ich habe gehört, dass es in Zukunft besser ist, "UICollectionView" als "UITableView" zu verwenden, und es ist möglicherweise nicht mehr gut, die Tabelle zu überladen. .. .. : Denken:
Recommended Posts