iOS 隐藏具有等宽约束的按钮
iOS Hide button with equal width constraint
所以我正在尝试根据应用程序中的权限实施一些功能限制。有问题的功能适用于位于 main.storyboard 中 VC 底部的按钮。
还有一个按钮我想保留在那里。它们水平对齐,但不在水平堆栈视图中。它们具有等宽约束,并且一起占据底部的整个垂直 space。
我想隐藏第一个按钮,因此让第二个按钮从左到右占据整个水平 space,但前提是对第一个按钮的访问应该受到限制。我试过在 viewNeedsRefresh:
中这样做
let equalWidthConstraint = firstButton.superview?.constraints.filter{
[=11=].firstItem as? UIButton == firstButton && [=11=].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)
但这只是隐藏了第一个按钮,而第二个按钮突然部分离开了屏幕。如果我尝试不手动禁用约束,我会让它看起来更干净,但第二个按钮仍处于其原始位置,可能是因为由于约束它仍保持原始宽度。
就我个人而言,我会执行以下操作:
- 移除等宽约束
- 将其中一个按钮的宽度约束设置为父视图宽度的 0.5 倍,然后为约束创建一个出口
- 将另一个带有尾随或前导(取决于您选择的按钮)的按钮设置为零。
当你需要折叠按钮时,你现在可以像这样直接设置约束的常量:
buttonWidth.constant = 0
这会隐藏视图并给你想要的效果。
事实证明,在我加入之前,他们过去曾为此构建了一个可重用的组件,但实际上并没有多次使用它。我已将页面转换为使用该组件。抱歉各位。
所以我正在尝试根据应用程序中的权限实施一些功能限制。有问题的功能适用于位于 main.storyboard 中 VC 底部的按钮。
还有一个按钮我想保留在那里。它们水平对齐,但不在水平堆栈视图中。它们具有等宽约束,并且一起占据底部的整个垂直 space。
我想隐藏第一个按钮,因此让第二个按钮从左到右占据整个水平 space,但前提是对第一个按钮的访问应该受到限制。我试过在 viewNeedsRefresh:
中这样做let equalWidthConstraint = firstButton.superview?.constraints.filter{
[=11=].firstItem as? UIButton == firstButton && [=11=].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)
但这只是隐藏了第一个按钮,而第二个按钮突然部分离开了屏幕。如果我尝试不手动禁用约束,我会让它看起来更干净,但第二个按钮仍处于其原始位置,可能是因为由于约束它仍保持原始宽度。
就我个人而言,我会执行以下操作:
- 移除等宽约束
- 将其中一个按钮的宽度约束设置为父视图宽度的 0.5 倍,然后为约束创建一个出口
- 将另一个带有尾随或前导(取决于您选择的按钮)的按钮设置为零。
当你需要折叠按钮时,你现在可以像这样直接设置约束的常量:
buttonWidth.constant = 0
这会隐藏视图并给你想要的效果。
事实证明,在我加入之前,他们过去曾为此构建了一个可重用的组件,但实际上并没有多次使用它。我已将页面转换为使用该组件。抱歉各位。