在启用自动布局的情况下调整 swift/xcode 中的按钮大小

Posted

技术标签:

【中文标题】在启用自动布局的情况下调整 swift/xcode 中的按钮大小【英文标题】:Resize button in swift/xcode with Autolayout enabled 【发布时间】:2016-01-29 05:59:27 【问题描述】:

我已经阅读了有关此主题的其他几篇 SO 帖子,据我了解,要在启用 AutoLayout 时调整对象的大小,您可以简单地在代码中更改其约束的常量属性。

我有两个并排的按钮,像这样

[删除][帖子]

它们占据了整个屏幕的宽度。我想隐藏某些视图的删除按钮,当这种情况发生时,拉伸发布按钮以占据屏幕的整个宽度。在我的代码中,我有:

self.postButtonLeadingConstraint.constant = self.deleteButtonLeadingConstraint.constant
self.deleteButton.hidden

我的删除按钮隐藏得很好,但我的发布按钮保持在原来的位置。我做错了什么?非常感谢任何输入。

编辑:如果重要的话,我的按钮会受到如下限制:

删除限制在视图前沿的按钮

发布按钮前导限制在删除按钮的后沿

删除和发布按钮设置为彼此相等的宽度

这两个按钮的顶部和按钮都被限制在它们所在的视图中,但我看不出它们是如何相关的。

【问题讨论】:

你添加了什么约束?可以发一下吗 【参考方案1】:

如果您的目标是 ios 9 及更高版本,那么我建议您使用 UIStackView。这种方式非常简单,只需在堆栈视图中添加和/或删除按钮即可。这里little sample帮助你理解。

【讨论】:

我要补充一点,您甚至不一定需要从堆栈视图中删除按钮。堆栈“监控”包含视图的hidden 属性,只需将按钮的隐藏属性设置为true 即可正确调整布局【参考方案2】:

试试这个:

self.postButtonLeadingConstraint.constant -= self.deleteButton.frame.size.width
self.deleteButton.hidden = true

【讨论】:

不知道为什么,但这让我的帖子按钮完全消失了。您确定这不是将它附加到屏幕的右边缘吗? 这几乎可以工作!出于某种原因,我的发布按钮几乎一直延伸到屏幕边缘,但还剩下大约 10 个像素的间隙。我不知道为什么会这样,考虑到组合按钮占据了整个屏幕的宽度并且在中间完美地相遇。有什么想法吗? @RandyBanks 也许这可行:self.postButtonLeadingConstraint.constant = -self.deleteButton.frame.size.width-self.postButtonLeadingConstraint.constant @RandyBanks 还有自我。在 Swift 中不需要。 还是不行。我想这个问题一定是源于我的视图设计中的其他地方,我没有在我的帖子中包含。我可以通过硬编码在减法中额外的 30 像素来解决这个问题,但出于明显的原因,我不想让它这样【参考方案3】:

问题是虽然你隐藏了按钮,但它的宽度保持不变。如果你使用

self.deleteButtonWidthConstraint.constant = 0

其中deleteButtonWidthConstraint 是一个连接到删除按钮宽度约束的@IBOutlet。

【讨论】:

以上是关于在启用自动布局的情况下调整 swift/xcode 中的按钮大小的主要内容,如果未能解决你的问题,请参考以下文章

在不使用自动布局的情况下调整 iPhone 5 屏幕尺寸

按钮和自动布局

调整 UIButton 宽度/高度 (iOS) - 如何在不禁用自动布局的情况下解决?

css [CSS静态布局]默认情况下使您的布局快速和静态。在每个元素的基础上启用基于内容的大小调整。 #CSS #tips

在启用自动布局和大小类的情况下更改视图宽度

Xcode 6 无法在启用自动布局的情况下移动 UIButton