UIViewanimation更改与自动布局约束

假设我有一个如下所示的项目:

在这里输入图像说明

有两个UIView – 一个叫做yellowBox ,另一个叫redBox 。 自动布局约束规定yellowBox距离超级视图的顶部60点,具有350点的前导和尾随空格(即,视图的左侧和右侧)。 redBox具有相同的前后空格限制。 在两个0的框之间有一个垂直空间约束,表示yellowBox框的底部应该总是直接在redBox顶部。

当用户点击展开黄色框button时,我想要增加黄色框的高度,结果, redBox向下移动以继续满足垂直空间限制( yellowBox始终位于redBox顶部)。 这里是animation代码:

 - (IBAction)expandYellowBox:(id)sender { [UIView animateWithDuration:0.5 animations:^{ CGRect newFrame = self.yellowBox.frame; newFrame.size.height += 50; self.yellowBox.frame = newFrame; }]; } 

不过,我一直无法正常工作。 正如你可以看到红色的图标,目前有一个约束的问题:

在这里输入图像说明

这是公平的,因为没有办法让自动布局知道盒子的高度。 但是,我不知道如何解决这个问题,这样可以调整箱子的大小和移动。 例如,如果我在yellowBox上指定高度约束,那么将阻止它被resize。 如果我将高度约束设置为大于或等于 (允许yellowBox高度增加),那么我得到一个不同的约束错误:

在这里输入图像说明

所有约束条件都是在故事板中使用Xcodebuild立的 – 没有一个是用代码编写的。

任何帮助不胜感激。


编辑:事实certificate,button被点击时, yellowBox正在增长 – 这只是我不能说,因为它出现在redBox后面。 我只是四次点击后才注意到,它开始出现在redBox的底部。 然而,同样的问题仍然存在 – 如何让redBox始终坚持redBox的底部。

如shwet-solanki提到的那样尝试它,但是在改变约束之后添加下面一行:

 [self.view layoutIfNeeded]; 

IBAction看起来像:

 - (IBAction)expandYellowBox:(id)sender { [UIView animateWithDuration:0.5 animations:^{ self.yellowBoxHeightConstraint.constant += 50; [self.view layoutIfNeeded]; }]; } 

其中, yellowBoxHeightConstraintyellowBoxHeightConstraint高度约束的yellowBox 。 希望这可以帮助。

  1. 将高度约束添加到两个视图
  2. 为黄色的高度约束创build一个IBOutlet
  3. 现在,而不是更改button按下事件中的黄色框的高度,而是更改高度约束的值。 即假设您的IBOutlet约束名称为yellowBoxHeightConstraint, yellowBoxHeightConstraint.constant += 50;

希望这对你有用。

 // // WPViewController.h // AutoLayoutTEst // // Created by VASANTH K on 09/01/14. // // #import <UIKit/UIKit.h> @interface WPViewController : UIViewController @property (strong, nonatomic) IBOutlet UIButton *button1; - (IBAction)buttClicked:(id)sender; @property (strong, nonatomic) IBOutlet NSLayoutConstraint *heightConstrain; @property (strong, nonatomic) IBOutlet UIButton *button2; @end 

点击事件

 - (IBAction)buttClicked:(id)sender { self.heightConstrain.constant=100; } 

在这里你需要为黄色button设置heightConstrain ,然后为该button创build引用出口,然后更新heightConstrain来更新该button的大小,它会自动将红色button向下移动。

https://github.com/vasanth3008/AutoLayoutHeighDemo

请参考我的示例演示项目