La vista de encabezado de tableView personalizado se superpone a las celdas de vista de tabla

Diseñé una vista personalizada como la vista de encabezado de mi UITableView. así como esto (solo pongo el enlace de la image aquí en lugar de la image ya que no tengo 10 reputaciones).

http://i.stack.imgur.com/KhNbE.png

Luego en mi UITableViewController utilizo esta vista como tableHeaderView

 override func viewDidLoad() { tableView.tableHeaderView = headerView! //...other things } 

Recibí text de un JSON para cumplir con ContentLabel . Si el text es largo, el headerView superpondrá las celdas igual que la image de abajo. (El text breve está bien)

http://i.stack.imgur.com/gtO2g.png

La sección está visible pero el headerView superpuso dos líneas de celda. No estoy seguro de si hice restricciones o códigos incorrectos en ContentLabel . A continuación se muestra el código que configuré contentLabel en 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.prefernetworkingMaxLayoutWidth = self.contentLabel.alignmentRectForFrame(contentLabel.frame).width self.titleLabel.prefernetworkingMaxLayoutWidth = self.titleLabel.bounds.size.width self.authorLabel.prefernetworkingMaxLayoutWidth = self.authorLabel.bounds.size.width self.setFrameHeight(CGRectGetMaxY(contentLabel.frame) + 8) } 

Busqué preguntas similares en SO, pero parece que no puedo encontrar una solución para solucionar mi problema. ¿Alguien puede ayudarme en esto?

EDITADO:

Registré el origen CGPoint de mi primera celda tableView y la altura de headerView. Muestra el número correcto, lo que significa que la primera celda está justo al lado de la vista del encabezado verticalmente. Hay una brecha de 22 puntos debido a la altura de la sección del curso.

 headerheight:600.0 first cell's y: 622.0 

Entonces, ¿tal vez el problema de la label es que su altura es demasiado grande para exceder los límites de TableView headerView? No estoy seguro.

EDITADO:

Cosas extrañas suceden. headerView valor de y de headerView de headerView , contentLabel y primer origen de UITableViewCell . Por favor vea la image del enlace en el comentario de la pregunta a continuación (todavía necesita 10 reputación)

Como puede ver, desde el valor en la console, la secuencia de vista desde la parte superior debería ser "contentLabel's bottom (value: 224) – header bottoms (valor: 232) – origen de la primera celda (valor: 254)" . Pero en el simulador, la secuencia está totalmente desorderada. Gira "los límites inferiores de headerView – origen de la primera celda – parte inferior de la base de contenido"

Realmente aprecio si alguien puede ayudar en esto.

El problema es que UITableView no cambia automáticamente las posiciones de las celdas cuando headerView la altura de su headerView . Por lo tanto, necesita volver a cargar UITableView cada vez que cambie TopicHeaderView.content .

Seleccione esa vista de encabezado, o imageView lo que tiene allí, y consulte Clip Subviews en la pestaña Attributes Inspector .

Esto funcionó para mí. antes de

Storyboard