gpt4 book ai didi

ios - 以编程方式将 subview 添加到自定义 UITableViewCell

转载 作者:行者123 更新时间:2023-11-28 07:44:21 25 4
gpt4 key购买 nike

我有自定义 UITableViewCell 并添加了几个 subview 。我正在使用 自动布局。我需要向单元格添加另一个 subview ,但不使用 Auto Layout(以便我可以使用 pan 手势 左右移动)。当我添加它时,它会得到错误的高度(比想要的大)。我也在检查单元格的高度,它小于 contentView 的高度。这是我的代码:

class IntervalCell: UITableViewCell {

override func awakeFromNib() {
super.awakeFromNib()
}

func createThumb() {

let height = self.frame.size.height - 20
let width = height * 0.7
let originY: CGFloat = 0
let originX = sliderView.frame.origin.x - width / 2

let thumbFrame = CGRect(x: originX, y: originY, width: width, height: height)

let testView = UIView(frame: thumbFrame)
testView.backgroundColor = .red
self.contentView.addSubview(testView)

}

}

因为 let height = self.frame.size.height - 20 假设 subview 的高度只是屏幕的一部分,但实际上它比全细胞。 crateThumbtableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 中调用。

最佳答案

因为你提到 crateThumbtableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 中调用,这意味着你的 UITableViewCell 子类有尚未通过 autolayout 调整大小,因此当 crateThumb 被调用但当单元格的大小仅为 30 高度,因此您的 testView 将太大。

您可以执行以下操作:

1) 在调用 ``crateThumb()` 之前调用 cell.layoutIfNeeded()

2) 在你的子类 layoutSubviews()

override func layoutSubviews() {
super.layoutSubviews()
let thumbView = ...//somehow get your thumb view and change its height/width
}

注意:要获得您的 thumbView,您可以向您的子类添加一个属性或为其分配一个自定义标签:

let testView = UIView(frame: thumbFrame)
testView.tag = 100

然后你可以得到它:

if let thumbView = contentView.viewWithTag(100) {
//modify thumbViews height/width
}

关于ios - 以编程方式将 subview 添加到自定义 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51480342/

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