更改 UILabel 行数后调整 UIStackView 的大小

2024-01-10

我的 iOS 应用程序有一个带有一个 UITableViewCell 的表格视图,其布局如下(1 个堆栈视图包含 2 个标签和 1 个按钮)

当用户点击按钮时,中央标签的行数从 0 变为 2,如下所示:

现在这里有两个问题:

1)调整UIStackView的大小

2)调整单元格大小

我找到了问题 1 的非最佳解决方案,其中包括在堆栈中添加一个空视图。 (invalidateIntrinsicContentSize 不起作用)。

let emptyView = UIView()
emptyView.frame = CGRect(x: 0, y: 0, width: 0, height: 0)
stackView.addArrangedSubview(emptyView)

正如您在第二个屏幕截图中看到的,单元格没有调整大小,我不确定这是由于堆栈视图还是单元格本身造成的。

我想指出这样一个事实:我正在 UITableViewCell 子类中编写代码,因为按钮事件是在其中处理的。

作为记录,Tableview 使用动态调整大小:

// dynamic cell sizing 
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    return UITableViewAutomaticDimension
}

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {

    return CGFloat(cellEstimatedHeight)
}

UIStackView可能是也可能不是您的最佳选择...它的设计更多是为了在自己的框架内排列视图,而不是根据视图调整自己的框架。

对于像您这样简单的布局,仅使用正常约束来布局元素可能会更好。

看一下这个例子:https://github.com/DonMag/DynamicCellHeight https://github.com/DonMag/DynamicCellHeight

表 B 是one完成布局的方法(表 A 是我使用的另一种布局)。

我必须做一些小技巧才能让主标签在单元格大小调整时保持在适当的位置......可能会找到更好的方法。 (重新编辑 - 是的,找到了更好的方法)

让我知道它是否有意义——毫无疑问你会想要做一些调整。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 UILabel 行数后调整 UIStackView 的大小 的相关文章

随机推荐