我有一个自定义的UITableViewCell,我试图在我的tableview的nib中设置。我有一个方法用于设置我的单元格,setupCell()
似乎没有正确地获得我的身高。
我在tableView heightForRow方法中设置高度,如下所示:
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let cell = tableView.dequeueReusableCellWithIdentifier(kProfilePicIdentifier) as! ProfilePictureTableViewCell
return cell.computeHeight()
}
这会将单元格用于此方法来设置高度:
override func computeHeight() -> CGFloat {
let screenRect = UIScreen.mainScreen().bounds
let height = screenRect.height * 0.4
return height
}
setupCell方法如下所示:
override func setupCell() {
profilePicture.image = UIImage(named: "prof_pic")
profilePicture.layer.cornerRadius = profilePicture.frame.size.height / 4.6
profilePicture.clipsToBounds = true
}
cornerRadius公式使其正好适用于我设置的高度。但是,一旦我改变computeHeight
函数的高度,这反过来改变了tableViewCell的行高,圆就搞乱了,因为它似乎没有得到正确的高度。
profilePicture出口设置为视图总高度的一半,但它似乎并不反映当我调用setupCell
时,它总是被设置为一个恒定的大小而不是视图大小的一半。
有人知道细胞的高度何时实际设定?我什么时候可以调用这个方法,以便我可以轻松地将高度除以2得到半径?
编辑:所以我通过将角落逻辑放在layoutSubviews()
中来实现它的工作,但是我仍然有兴趣知道笔尖内部图像的实际高度何时设置。
答案 0 :(得分:0)
如果您正在使用自动布局,则可以覆盖viewDidLayoutSubviews,它将在布局引擎通过后立即调用。 viewDidlayoutSubviews可以多次调用。到最后一次调用viewDidLayoutSubviews时,所有viewController的子视图都被设置了。但是,当设置特定帧时未定义,但您可以在viewDidLayoutSubviews中放置一个print语句,以了解哪个传递设置了它的帧。