如何使用自动布局防止 UIButton 超出其父 UIView 的宽度

Posted

技术标签:

【中文标题】如何使用自动布局防止 UIButton 超出其父 UIView 的宽度【英文标题】:How to prevent UIButton from exceeding its parent UIView's width with autolayout 【发布时间】:2017-03-29 19:34:49 【问题描述】:

是否可以创建一个 MaxWidth 约束来防止 UIButton 超出其父 UIView 的宽度?

UIButton 是使用V:[ParentView]-(<=1)-[Button] 约束以编程方式创建并在其父 UIView 中水平居中,但是当文本太大时,按钮的宽度会超过 ParentView。

注意:我不想添加前导/尾随约束,这将强制按钮始终与父按钮的宽度相同。我真的需要按钮水平居中,所以当文本很短时,它不会覆盖整个宽度。

【问题讨论】:

从按钮添加前导/尾随约束到UIView 可以参考这个:developer.apple.com/reference/uikit/nslayoutconstraint @JuicyFruit 我想我不能这样做,添加前导/尾随约束将强制按钮始终与父按钮的宽度相同。我真的需要按钮水平居中,所以当文本很短时,它不会覆盖整个宽度。 你应该使用>=0 @JuicyFruit 你能想象一下整个 VFL 约束吗,因为我是新手 ;) 【参考方案1】:

您可以将您的buttonwidthAnchor 设置为小于或等于其parentViewwidthAnchor

button.widthAnchor.constraint(lessThanOrEqualTo: parentView.widthAnchor, multiplier: 1).isActive = true

【讨论】:

以上是关于如何使用自动布局防止 UIButton 超出其父 UIView 的宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 Interface Builder 的情况下将 UIButton 对象的中心约束到其父视图

如何使用自动布局在其父视图的一半中启动视图?

iOS - 以编程方式使用自动布局将 UIView 定位在超级视图的中心

如何使用自动布局对子视图进行编程以占用其父视图宽度的 50% 但保持恒定高度?

如何使用自动布局平均分配 UIButton

如何使用自动布局在 ios 中以编程方式在 UIview 上添加 UIbutton