dequeueReusableCell 之后的单元格布局
Posted
技术标签:
【中文标题】dequeueReusableCell 之后的单元格布局【英文标题】:Cell layout right after dequeueReusableCell 【发布时间】:2017-04-20 13:47:27 【问题描述】:我可以假设从let cell = tableView.dequeueReusableCell()
获取单元格后,该单元格将具有其所有内容大小(特别是 - 将被布置)并且我可以安全地访问 f.e.位于单元格内的标签的宽度?
它似乎在我的项目中工作,但我想完全放心,但在文档中找不到相关信息。
【问题讨论】:
你到底想要什么? 我想访问标签的宽度,以便决定是否需要隐藏其他按钮。标签是单元格主视图的子视图。 在哪里需要标签宽度? 我很想在我将一个单元格出列后立即在tableView(cellForRow:)
中使用它。
【参考方案1】:
更可靠:
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
// do your setup tasks here
【讨论】:
我想这是一个更好的解决方案,但它不是问题的直接答案,所以我会接受另一个,好吗? @dontgonearthecastle - 使用固定高度和动态高度单元格时结果可能会有所不同...当我使用UILabel
中行数可变的单元格运行快速测试时,我为cellForRow
中的单元格框架获取(例如)(0.0, 0.0, 320.0, 44.0)
和(0.0, 0.0, 414.0, 40.3333333333333)
为willDisplay
中的同一单元格
好吧,那是发人深省的食物。我认为 willDisplay 本来就是做这样的事情的地方,所以最好坚持下去;)感谢您的详细研究! ;)【参考方案2】:
如果您想获取单元格中存在的标签宽度......然后使用标签属性可以获取标签及其宽度..
【讨论】:
问题是 - 我可以确定所有的框架和尺寸都是正确的吗?或者如果有什么我不明白的? :p 我的意思是 - f.e.你不能在viewDidLoad
方法中初始化几何相关的东西。那么我可以在从dequeueReusableCell
获取单元格后立即在tableView(cellForRow)
中初始化几何相关的东西吗?
不,我只是找不到任何确认这样做是否安全
@dontgonearthecastle 为什么不接受我的回答?
因为我相信 DonMag 的回答提供了更好的方法来解决这个问题。我知道您的回答是对该问题的直接回答,但他进行了一些研究以证明有更好的方法可以实现我想要的。没有冒犯;)以上是关于dequeueReusableCell 之后的单元格布局的主要内容,如果未能解决你的问题,请参考以下文章
使用出队的 dequeueReusableCell - 出队后单元格的 textField
为啥我们需要 dequeueReusableCell func 获得的向上转换单元格?
iOS:UICollectionView 内容重置和 dequeueReusableCell
dequeueReusableCell 打破了cliptobounds