笔尖高度何时设定?

时间:2015-11-08 23:18:21

标签: ios swift nib

我有一个自定义的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()中来实现它的工作,但是我仍然有兴趣知道笔尖内部图像的实际高度何时设置。

1 个答案:

答案 0 :(得分:0)

如果您正在使用自动布局,则可以覆盖viewDidLayoutSubviews,它将在布局引擎通过后立即调用。 viewDidlayoutSubviews可以多次调用。到最后一次调用viewDidLayoutSubviews时,所有viewController的子视图都被设置了。但是,当设置特定帧时未定义,但您可以在viewDidLayoutSubviews中放置一个print语句,以了解哪个传递设置了它的帧。