在启用自动布局的情况下调整 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 中的按钮大小的主要内容,如果未能解决你的问题,请参考以下文章
调整 UIButton 宽度/高度 (iOS) - 如何在不禁用自动布局的情况下解决?
css [CSS静态布局]默认情况下使您的布局快速和静态。在每个元素的基础上启用基于内容的大小调整。 #CSS #tips