gpt4 book ai didi

ios - 何时在 UITableViewCell 子类中启动自定义 View ?

转载 作者:搜寻专家 更新时间:2023-10-31 22:35:55 24 4
gpt4 key购买 nike

我正在尝试对 Cell 进行子类化,但我在 init() 中获得的帧大小不是我在 heightForRowAtIndexPath 中设置的帧大小。

class MyCell: UITableViewCell {

override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
initCell()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initCell()
}
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
println("ContentViewFrame IN SET SELECTED: \(self.contentView.frame)")
}

func initCell() {
println("ContentViewFrame IN initCell: \(self.contentView.frame)")
}
}

我用 tabelView 注册它:

myTable.registerClass(MyCell.self, forCellReuseIdentifier: "awesomeCell")

使用它:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("conversationCell", forIndexPath: indexPath) as ConversationCell
return cell
}

动态设置高度:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 100.0
}

这是一个控制台输出:

ContentViewFrame IN initCell: (0.0,0.0,320.0,44.0)
ContentViewFrame IN SET SELECTED: (0.0,0.0,320.0,99.5)
ContentViewFrame IN SET SELECTED: (0.0,0.0,320.0,99.5)

所以我希望单元格在初始化时具有 100.0 的高度。但它的高度为 44.0,只有 setSelected 函数返回正确的高度。在单元格初始化的哪个阶段我应该定义我的自定义初始化,这样我就可以使用高度由 heightForRowAtIndexPath 定义的单元格?

最佳答案

将函数放在 layoutSubviews() 中。您不会将该函数放在那里,因为它是“布置 subview ”,而是因为它是在单元格的生命周期中调用的函数,您可以在其中保证单元格的所有 subview 实际上都由第一个布置super.layoutSubviews() 行,因此 contentView.frame 将被定义和准确。无法保证 contentView.frame 在 init 中是准确的。 prepareForReuse() 可能是更改框架的地方,因为您可以在此处清理和自定义您的单元格,然后再重新使用它。它看起来像这样:

override func layoutSubviews() {
super.layoutSubviews()
myFunction()
}

关于ios - 何时在 UITableViewCell 子类中启动自定义 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27398039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com