我有一个UITableViewCell的子类和UITableViewController的子类。我用我的自定义单元格填充了tableview。
我在故事板中创建了一个UITableViewCell,使其类成为我的自定义UITableViewCell Swift文件,并为其提供了一个标识符。然后我在控制器中创建单元格:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("myIdentifier", forIndexPath: indexPath indexPath)
return cell
}
在我的自定义单元格(在故事板上)我有一个具有以下约束的UIImageView:
顶部空间约束的常量为0,我认为这意味着ImageView顶部将与单元格顶部齐平。
但是,我的单元格中的图像被按下了一点:
白色只是表格标题,表现得非常好。但是,您可以看到图像上方出现的橙色间隙(橙色是单元格的背景颜色),我不希望那样。
我尝试在自定义单元格的awakeFromNib中设置图像框架:
@IBOutlet weak var img: UIImageView!
override func awakeFromNib() {
img.frame = CGRectMake(0, 0, img.frame.width, img.frame.height)
}
但这没有效果,所以我尝试在layoutSubviews中设置框架:
override func layoutSubviews() {
img.frame = CGRectMake(0, 0, img.frame.width, img.frame.height)
}
这很有效,但只有在向下滚动并备份到TableView之后才有效。前两个单元格有橙色间隙,但是如果你滚动到第三个单元格并备份,那么间隙就会消失。
有谁知道为什么会这样?如何将图像视图立即定位在(0,0),而不是仅在向下滚动并备份之后?
答案 0 :(得分:1)
当我尝试重现您的情况并拖动imageView以对齐到单元格的顶部时,Xcode建议约束为-8
,并且它可以正常工作但是如果我将其设置为0
我得到了问题的背景颜色,尝试将顶部约束设置为-8
或Xcode建议的任何颜色。
我对AutoLayout不是很熟悉所以我无法澄清Xcode为什么要将其设置为-8
答案 1 :(得分:0)
尝试通过以下代码设置tableViewCell的高度:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UIScreen.mainScreen().bounds.width
}