如何动态地将动态大小的 UIButtons 插入 UIStackView?

Posted

技术标签:

【中文标题】如何动态地将动态大小的 UIButtons 插入 UIStackView?【英文标题】:How to insert UIButtons of Dynamic size into a UIStackView dynamically? 【发布时间】:2017-12-21 06:15:49 【问题描述】:

这很好用:

                let label = UILabel()
                label.text = VARIABLE_LENGTH_STRING
                stackView?.addArrangedSubview(label)

但这不起作用

                let button = UIButton()
                button.setTitle(VARIABLE_LENGTH_STRING, for: .normal)
                stackView?.addArrangedSubview(button)

什么都没有显示!知道为什么吗?我希望标签的行为与按钮非常相似......

感谢您的帮助!

【问题讨论】:

设置按钮的背景颜色并检查。 【参考方案1】:

问题在于默认情况下 - 一个新的 UIButton() 具有白色文本和白色背景 --- grrrr!

我通过这样做解决了这个问题:

button.setTitleColor(.blue, for: .normal)

【讨论】:

遇到了同样的问题并进行了同样的调试。谢谢。【参考方案2】:

设置按钮标题后,尝试在代码中添加以下行,

 button.sizeToFit()

【讨论】:

【参考方案3】:

首先检查“VARIABLE_LENGTH_STRING”中是否有任何值,如果它有空字符串,则不会显示任何内容并给出按钮框架大小,因此如果没有文本按钮高度宽度将是特定的,另外还有一件事更改按钮背景颜色默认情况下它很清楚,因此您只能通过更改背景颜色和框架在屏幕上看到按钮的内容(如果有),您将在屏幕事件中看到它,它没有要显示的内容:)。

【讨论】:

问题是一切都默认为白色 - 白色背景上的白色文本!谢谢指点。

以上是关于如何动态地将动态大小的 UIButtons 插入 UIStackView?的主要内容,如果未能解决你的问题,请参考以下文章

我可以动态地将计算属性插入到 Vue 组件中吗

如何动态地将按钮添加到视图以使布局宽度正常工作?

以可变帧大小动态地将精灵表切割成单独的位图

从 SQL 服务器动态地将单个记录插入到 MS 访问中

如何在具有动态大小的单元格的 UICollectionViewFlowLayout 子类上正确设置节插入

如何更快地将单个行插入 MySQL 表?