ios - 以编程方式更新约束

标签 ios objective-c ipad

情况就像我有一个带有四个按钮的 View

enter image description here

有一个条件,当带有文本搜索社区的按钮应该被隐藏并且选项按钮的宽度应该增加时

enter image description here

在我的项目中第一次使用约束,我不知道如何实现这一点。从以下两张图片可以清楚地看到在这两个按钮上添加的一组约束。

enter image description here

enter image description here

最佳答案

我在您的设置中发现的问题是,两个宽度相等的按钮之间存在这种限制。在第一种情况下是这样,但当你想隐藏其中一个时,它就不再是了。

因此,您需要重新考虑一下您的限制。也许您可以在第一个按钮(您想要隐藏的左侧按钮)上使用静态宽度约束,而不是等宽度约束。然后第二个,将只有第一个的水平空间约束,以及 superView 的尾随空间。

然后你在 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
    })
} 

关于ios - 以编程方式更新约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31180188/

相关文章:

html - iPad 缩放比例检测

ios - 发送http请求返回<>

ios - 你如何在 swift 中将 int 转换为 double?

iphone - 什么时候在 iOS 的 sqlite 中完成语句?

iphone - Objective-C : Accessing constants from other classes

ios - 为什么当我对 int 使用 #define 时需要将它们括在括号中?

jquery - 选择、聚焦或始终显示 iPad 键盘 (jQuery)

iOS:链接错误而反对静态库,即使我没有引用该库中的任何代码

ios - UICollectionViewCell 的间距优先于大小

iphone - 如何将数字和字符拆分为 objective-c 中的两个字符串?