自定义tableView的标题视图与表格视图单元格

时间:2015-04-24 08:37:25

标签: ios uitableview

我设计了一个自定义视图作为我的UITableView的标题视图。像这样 (我只是将图像链接放在这里而不是图像,因为我没有10个声誉。)

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

然后在我的UITableViewController中,我将此视图用作tableHeaderView

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

我从JSON获取文本以实现ContentLabel。如果文本很长,headerView将像下面的图像重叠单元格。(短文本可以)

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

部分是可见的,但是两行单元格已经被headerView重叠。我不确定我是否在ContentLabel上做了错误的约束或代码。以下是我在contentLabel

中配置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)

}  

我在SO中浏览了类似的问题,但似乎无法找到解决方案来解决我的问题。任何人都可以帮忙吗?

编辑:

我记录了我的第一个tableView单元格的起始CGPoint和headerView的高度。它显示正确的数字,这意味着第一个单元格垂直于标题视图旁边。当然,由于部分的高度,有22分的差距。

headerheight:600.0
first cell's y: 622.0

所以也许它的标签问题是它的高度太大而不能超过TableView headerView的界限?我不确定。

编辑:

奇怪的事情发生了。我记录了headerView的底部,contentLabel的底部和第一个UITableViewCell来源的y值。请参阅下面问题评论中的链接图片(仍然需要10个声誉)

正如您所看到的,从控制台中的值来看,顶部的视图序列应该是&#34; contentLabel的底部(值:224) - headerView的底部边界(值: 232) - 第一个小区的起源(值:254)&#34; 。但是在模拟器中,序列完全搞砸了。它变成了&#34; headerView的底线 - 第一个单元格的起源 - contentLabel的底部&#34; < / p>

如果有人能帮忙,我真的很感激。

2 个答案:

答案 0 :(得分:3)

问题是,当UITableView的高度发生变化时,headerView不会自动更改单元格的位置。因此,每次UITableView更改时,您都需要重新加载TopicHeaderView.content

答案 1 :(得分:-1)

选择该标题视图或imageView您拥有的内容,然后在Clip Subviews标签中查看Attributes Inspector

这对我有用。 Before

Storyboard