Ho progettato una vista personalizzata come vista dell'intestazione del mio UITableView. proprio come questo (ho appena messo immagine link qui invece di immagine dal momento che non ho 10 reputazioni.)La vista dell'intestazione della tabella personalizzata si sovrappone alle celle della vista tabella
http://i.stack.imgur.com/KhNbE.png
Poi nel mio UITableViewController
Io uso questo punto di vista come tableHeaderView
override func viewDidLoad() {
tableView.tableHeaderView = headerView!
//...other things
}
Ho ricevuto il testo da un JSON per soddisfare lo ContentLabel
. Se il testo è lungo, il headerView si sovrappongono le cellule proprio come l'immagine qui sotto. (Breve testo è OK)
http://i.stack.imgur.com/gtO2g.png
sezione è visibile, ma due linee di cellule sono state sovrapposte dal headerView.I'm non certo se ho sbagliato vincoli o codice su ContentLabel
. Di seguito è riportato il codice che ho configurato il contentLabel
in TopicHeaderView.swift
var content: String? {
didSet {
self.contentLabel.text = content!
self.setNeedsUpdateConstraints()
self.updateConstraintsIfNeeded()
self.setNeedsLayout()
self.layoutIfNeeded()
}
}
func setFrameHeight(height: CGFloat) {
var frame = self.frame
frame.size.height = height
self.frame = frame
}
override func layoutSubviews() {
super.layoutSubviews()
self.contentLabel.preferredMaxLayoutWidth = self.contentLabel.alignmentRectForFrame(contentLabel.frame).width
self.titleLabel.preferredMaxLayoutWidth = self.titleLabel.bounds.size.width
self.authorLabel.preferredMaxLayoutWidth = self.authorLabel.bounds.size.width
self.setFrameHeight(CGRectGetMaxY(contentLabel.frame) + 8)
}
ho passato in rassegna domande simili a SO, ma sembra non riesco a trovare una soluzione per risolvere il mio problema. Qualcuno può aiutare su questo?
Modificato:
mi sono collegato l'origine CGPoint della mia prima cella tableView e l'altezza di headerView. Mostra il numero giusto che significa che la prima cella si trova proprio accanto alla vista dell'intestazione in verticale. C'è un gap di 22 punti a causa dell'altezza della sezione, ovviamente.
headerheight:600.0
first cell's y: 622.0
Quindi forse il problema dell'etichetta è che l'altezza è troppo grande per superare i limiti di TableView headerView? Non ne sono sicuro.
MODIFICATO:
Le cose strane accadono. Ho registrato il valore y del fondo inferiore di headerView
, contentLabel
inferiore e la prima origine di UITableViewCell
. Si prega di vedere l'immagine dal link nel commento della domanda qui sotto (hanno ancora bisogno di 10 reputazione)
Come si può vedere, dal valore in console, la sequenza di visualizzazione dall'alto dovrebbe essere "bottom di ContentLabel (valore: 224) - header's bound bounds (valore: 232) - origine della prima cella (valore: 254) ". Ma nel simulatore, la sequenza è completamente incasinata. Si trasforma in "headerView's bottom bounds - origine della prima cella - contentLabel's bottom"
Apprezzo davvero se qualcuno può aiutare in questo.
immagine link: http://i.stack.imgur.com/xMuAB.png – behumble
Hai sovrascrivere 'tableView (tableView: UITableView, sezione heightForHeaderInSection: Int) -> CGFloat' ?. – sahara108