以编程方式更新约束
Updating constraints programmatically
情况就像我有一个带有四个按钮的视图
有一个条件,带有文本搜索社区的按钮应该被隐藏,选项按钮的宽度应该增加
第一次在我的项目中使用约束,我不知道如何实现它。从以下两张图片可以清楚地看出在这两个按钮上添加的一组约束。
向第一个按钮添加约束
- 引导 Space 到 NewView(灰色)
- 底部 space 到 NewView
- 顶部 Space 到顶部按钮(第一张和第二张图片中的蓝色)
- 宽度(从底部 - 右侧)
向第二个按钮添加约束
- 尾随 Space 到 NEwView
- 底部 space 到 NewView
- 顶部 Space 到顶部按钮(第一张和第二张图片中的蓝色)
- 水平space FirstButton(搜索社区)
- 宽度
我在你的设置中看到的问题是你在两个等宽的按钮之间有这个约束。在第一种情况下是这样,但是当你想隐藏其中一个时,就不再是这样了。
因此,您需要稍微重新考虑一下您的约束条件。也许您可以在第一个按钮(左边的按钮,您要隐藏的按钮)上使用静态宽度约束,而不是等宽约束。然后第二个,将只对第一个有一个水平 space 约束,对 superView 有一个尾随 space。
然后你在 VC 中为第一个按钮的宽度约束创建一个出口,当你想隐藏它时,你可以这样做:
self.searchButtonWidthConstraint.constant = 0
UIView.animateWithDuration(0.3, animations: { () -> Void in
self.view.layoutIfNeeded() // if you want to animate the constraint change
})
如果您有任何问题,请告诉我。祝你好运,希望一切顺利!
更新
对于横向用例,您可以监听方向更改通知,以更新按钮的宽度约束
-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
self.searchButtonWidthConstraint.constant = LANDSCAPE_WIDTH
UIView.animateWithDuration(duration, animations: { () -> Void in
self.view.layoutIfNeeded() // if you want to animate the constraint change
})
}
情况就像我有一个带有四个按钮的视图
有一个条件,带有文本搜索社区的按钮应该被隐藏,选项按钮的宽度应该增加
第一次在我的项目中使用约束,我不知道如何实现它。从以下两张图片可以清楚地看出在这两个按钮上添加的一组约束。
向第一个按钮添加约束
- 引导 Space 到 NewView(灰色)
- 底部 space 到 NewView
- 顶部 Space 到顶部按钮(第一张和第二张图片中的蓝色)
- 宽度(从底部 - 右侧)
向第二个按钮添加约束
- 尾随 Space 到 NEwView
- 底部 space 到 NewView
- 顶部 Space 到顶部按钮(第一张和第二张图片中的蓝色)
- 水平space FirstButton(搜索社区)
- 宽度
我在你的设置中看到的问题是你在两个等宽的按钮之间有这个约束。在第一种情况下是这样,但是当你想隐藏其中一个时,就不再是这样了。
因此,您需要稍微重新考虑一下您的约束条件。也许您可以在第一个按钮(左边的按钮,您要隐藏的按钮)上使用静态宽度约束,而不是等宽约束。然后第二个,将只对第一个有一个水平 space 约束,对 superView 有一个尾随 space。
然后你在 VC 中为第一个按钮的宽度约束创建一个出口,当你想隐藏它时,你可以这样做:
self.searchButtonWidthConstraint.constant = 0
UIView.animateWithDuration(0.3, animations: { () -> Void in
self.view.layoutIfNeeded() // if you want to animate the constraint change
})
如果您有任何问题,请告诉我。祝你好运,希望一切顺利!
更新
对于横向用例,您可以监听方向更改通知,以更新按钮的宽度约束
-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
self.searchButtonWidthConstraint.constant = LANDSCAPE_WIDTH
UIView.animateWithDuration(duration, animations: { () -> Void in
self.view.layoutIfNeeded() // if you want to animate the constraint change
})
}