gpt4 book ai didi

ios - 如何防止滚动 tableView 时按钮调整大小

转载 作者:行者123 更新时间:2023-11-29 05:25:14 27 4
gpt4 key购买 nike

我有一个带有按钮的表格 View ,我使用以下代码调整其大小以适合其标签:

class ResizableButtons: UIButton {
override var intrinsicContentSize: CGSize {
let labelSize = titleLabel?.sizeThatFits(CGSize(width: frame.width, height: .greatestFiniteMagnitude)) ?? .zero
let desiredButtonSize = CGSize(width: labelSize.width + titleEdgeInsets.left + titleEdgeInsets.right, height: labelSize.height + titleEdgeInsets.top + titleEdgeInsets.bottom)
return desiredButtonSize
}
}

enter image description here enter image description here

效果非常好。

当我尝试向下和向上滚动表格 View 时出现问题。

enter image description here enter image description here

正如您从快照中看到的,按钮的大小已调整。这似乎只有在我单击某个按钮并开始滚动后才会发生。如果我滚动而不单击,尺寸仍然可以。

我认为问题在于我如何为按钮设置标题。我用以下代码来做到这一点:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

//Every second row has a button.
if indexPath.row % 2 == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "ReusableCell") as! ReusableCell
cell.button.setTitle(textAndButtonsArray[indexPath.row], for: .normal)
cell.backgroundColor = UIColor.clear

//Checking if button was pressed before
if pressedButtons.contains(indexPath.row) {
print("Text for selected button at indexpath \(indexPath.row) is \(cell.button.titleLabel?.text)")
}
}

因此,如果我将按下的按钮的索引路径和文本标签打印到控制台,它会给出正确的索引路径。但控制台中显示的 textLabel 来自不同的按钮。从比实际按下的晚 10 行的那一行开始。

enter image description here

有什么办法可以解决这个问题吗?

附言不要注意按钮上的文字和标签,我先想到什么就写什么:)

最佳答案

尝试调整 willDisplayCell 中的单元格或按钮大小,并在 prepareForReuse 中重置按钮大小。调用intrinsicContentSize button.layoutIfNeeded()

关于ios - 如何防止滚动 tableView 时按钮调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58242395/

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