我设计了一个自定义视图作为我的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>
如果有人能帮忙,我真的很感激。