具有等宽约束的 iOS 隐藏按钮
Posted
技术标签:
【中文标题】具有等宽约束的 iOS 隐藏按钮【英文标题】:iOS Hide button with equal width constraint 【发布时间】:2018-05-08 15:02:01 【问题描述】:所以我正在尝试根据应用程序中的权限实施一些功能限制。有问题的功能适用于 main.storyboard 中 VC 底部的按钮。
我想保留另一个按钮。它们水平对齐,但不在水平堆栈视图中。它们具有等宽约束,并共同占据底部的整个垂直空间。
我想隐藏第一个按钮,从而让第二个按钮从左到右占据整个水平空间,但前提是应该限制对第一个按钮的访问。我试过在 viewNeedsRefresh 中这样做:
let equalWidthConstraint = firstButton.superview?.constraints.filter
$0.firstItem as? UIButton == firstButton && $0.secondItem as? UIButton == secondButton
.first
equalWidthConstraint?.isActive = false
firstButton.isHidden = true
secondButton.frame = CGRect(x: 0, y: firstButton.frame.origin.y, width: self.view.frame.width, height: firstButton.frame.height)
但这一切只是隐藏了第一个按钮,而第二个按钮突然部分脱离了屏幕。如果我尝试不手动禁用约束,我会让它看起来更干净,但第二个按钮仍处于其原始位置,可能是因为由于约束它仍保持原始宽度。
【问题讨论】:
为什么不以编程方式创建按钮? 这是为了工作,而这部分项目很久以前就完成了。我试图保持较小的更改,并且修改情节提要需要更长的时间才能使新更改获得批准。 【参考方案1】:就我个人而言,我会做以下事情:
-
移除等宽约束
在其中一个按钮上设置宽度约束,设置为超级视图宽度的 0.5 倍,然后为该约束创建一个出口
将带有尾随或前导(取决于您选择的按钮)的另一个按钮设置为零。
当你需要折叠按钮时,你现在可以像这样直接设置约束的常量:
buttonWidth.constant = 0
这将隐藏视图并为您提供所需的效果。
【讨论】:
【参考方案2】:事实证明,在我加入之前,他们过去为此构建了一个可重复使用的组件,但实际上并没有多次使用它。我已将页面转换为使用该组件。对不起各位。
【讨论】:
你能删除这个问题或标记一个正确的答案吗? 您将此答案标记为正确,但此答案未能回答实际问题。 根据所提出的问题没有有用的答案。以上是关于具有等宽约束的 iOS 隐藏按钮的主要内容,如果未能解决你的问题,请参考以下文章