使用自动布局同样划分两个按钮宽度

时间:2015-02-23 12:48:53

标签: ios objective-c autolayout

  • 宽度约束相等的2个按钮
  • 我的要求是当hide button1(Order)反映button2(Reservation)宽度等于(button1 + button2)宽度时。
  • 我已经应用_button1widthconstrain.constant = 0,但它不起作用。

请提供帮助。enter image description here

4 个答案:

答案 0 :(得分:1)

我想,现在你有这样的约束(1):

H:| - (0) - [order] - (0) - [reservation] - (0) - ],order.width = reservations.width

您应该创建其他约束,例如:(2):

H:| [订单] [约束] |

H:| [约束] [保留] |

,其中约束在按钮和superview的相应边界之间,并且常量= 0。 然后你应该将它们的优先级设置为小于主要约束(1)(例如990)。

在这种情况下,当您隐藏按钮时,我们的附加约束将变为活动状态,并使按钮填充所有宽度。

答案 1 :(得分:0)

您可以参考下面的github example.it将帮助您。 https://github.com/jrturton/UIView-Autolayout

答案 2 :(得分:0)

如果我理解正确,你想要做的是当你隐藏button1(订单)时,button2(预订)应该展开,其最终宽度应该是(原始)button1 + button2,这是正确的吗?

如果是这种情况,您可以执行以下操作:

  1. 添加一个包含button1和button2的UIView。将约束设置为UIView,使其最终达到按钮所需的高度,宽度等于button1 + button2(可能通过设置超前视图的前导和尾部约束)以及按钮所需的垂直位置
  2. 对于button1,将宽度约束,顶部和底部空间设置为超级视图(或者与容器中的superview +中心垂直相等的高度),以及容器视图的前导空间为0。
  3. 对于button2,将button1的水平间距设置为0,将superview的顶部和底部空间设置为0(或者与容器中的superview +中心垂直相等的高度),以及superview的尾随空间也为0。 不要为button2设置宽度约束
  4. 使用这组约束,当您将button1的宽度约束的常量更改为0时,button2应该扩展为所需的大小。

答案 3 :(得分:-1)

使用以下链接

下载github中的文件

https://github.com/damienromito/UIView-UpdateAutoLayoutConstraints

#import "UIView+UpdateAutoLayoutConstraints.h"

采取如下的2个NSLayoutConstraints

IBOutlet NSLayoutConstraint *orderHeightCons;
IBOutlet NSLayoutConstraint *reserHeightCons;
IBOutlet UIButton orderBtn,reservationBtn;

//Then connect at IB both Constraint & Buttons. Use Below Code For Hiding the Order Button & Modifying the Width for Reservation Button

orderBtn.hidden=YES;
//Hide Order Button..change value as per ur button height
[orderBtn setConstraintConstant:0 forAttribute:NSLayoutAttributeHeight];

//if constraint doesn't exist, it will be created..change value as per ur button width
[orderBtn setConstraintConstant:0 forAttribute:NSLayoutAttributeWidth];

//you can use tools to hide
[orderBtn hideByHeight:YES];

//Modify Reservation Button..change value as per ur button height
[reservationBtn setConstraintConstant:100 forAttribute:NSLayoutAttributeHeight];

//if constraint doesn't exist, it will be created..change value as per ur button width..(button1+button2) height value
[reservationBtn setConstraintConstant:200 forAttribute:NSLayoutAttributeWidth];

[reservationBtn hideByHeight:NO];

希望它对你有帮助..!