笔尖的高度是什么时候定的



我有一个自定义的UITableViewCell,我正试图在我的表视图的笔尖中设置它。我有一个用来设置我的细胞的方法,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()中放置角逻辑来实现它,但我仍然有兴趣知道笔尖内图像的实际高度是什么时候设置的。

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

最新更新