在 UIStackView 中增加 UIButton 的面积
Posted
技术标签:
【中文标题】在 UIStackView 中增加 UIButton 的面积【英文标题】:Increase area of UIButton in UIStackView 【发布时间】:2018-11-21 16:11:34 【问题描述】:我在 UIStackView 中嵌入了几个 UIButton。我了解 UIStackView 在布局时仅采用 UIButton 的固有大小。但是我想在 UIStackView 内增加 UIButton 的高度/宽度。如果没有 UIStackView,我可以轻松增加或减少 UIButtons 的帧大小。 UIStackView 是怎么回事?
详细信息:假设我给了 3 个 UIButtons,只有 UIImages,没有文本。按钮 1 为 80x80,按钮 2 图像为 30x30,按钮 3 图像为 30x30。我希望按钮 2 和 3 的触摸区域至少为 45x45 而不拉伸图像。当它不在 UIStackView 中时,我可以像这样简单地调整 UIButton 的大小。但是对于 UIStackView,所有按钮大小都是图像的大小(固有大小),我不知道如何修复。
【问题讨论】:
您能分享一下您希望如何显示按钮以及您目前已经达到的效果吗? 您应该能够为放置在堆栈视图中的按钮添加高度和/或宽度限制。 但是使用自动布局设置按钮的宽度和高度,为什么会出现自动布局错误(故事板中的红色框),需要更新间距值? 【参考方案1】:如果您将宽度/高度约束添加到按钮堆栈视图,则会根据约束而不是按钮的固有大小调整子视图的大小。
【讨论】:
手动指定 UIButton 的宽度和高度时出现自动布局错误(情节提要中的红色框)。为什么会发生这种情况? 因为UIStackView
试图根据其分布和对齐方式添加自己的约束。【参考方案2】:
为此,我通常使用contentEdgeInsets
属性。如果还不够,您需要添加一些自动布局约束。
【讨论】:
以上是关于在 UIStackView 中增加 UIButton 的面积的主要内容,如果未能解决你的问题,请参考以下文章
UIStackView 与 superview 的宽度成比例
UIScrollView 内的水平 UIStackView 不滚动