[自动布局]在超视图的高度发生变化时,将UIView附加到其超视图的底部

时间:2015-02-26 06:15:49

标签: ios objective-c uiview autolayout

我有一个superview,它只是UIView的一个子类,我有一个子视图,它是UIImageView的子类,我想附加到superview的底部。

子视图的高度是固定的,但是超级视图的高度可能会发生变化。所以基本上,我希望在我以编程方式更改superview的高度时,子视图始终附加到superview的底部。

我是通过自动布局来实现的,

enter image description here

所以superview已经离开,顶部,右边连接到它的超级视图,并且固定高度(我将以编程方式更改它),这是它的约束,

enter image description here

子视图左,下,右连接到超视图,其固定高度,以及超视图高度应等于或大于子视图高度的另一个约束。

enter image description here

最后,当我点击最底部的按钮时,我会改变超视图的高度。这是代码,

- (IBAction)testButtonPressed:(id)sender {
    [self.dragDownView setFrame:CGRectMake(CGRectGetMinX(self.dragDownView.frame), CGRectGetMinY(self.dragDownView.frame), CGRectGetWidth(self.dragDownView.frame), 100)];
}

然而,它没有做我想要的,这是将子视图附加到超级视图的底部。

在我改变身高之前

enter image description here

更改身高后

enter image description here

正如您所看到的那样,超视图的高度发生了变化,但子视图仍然保持了之前的状态。

任何可以帮助我的人?

2 个答案:

答案 0 :(得分:1)

链接约束: enter image description here

更新视图的框架如下:

self.heightConstraint.constant = 320;
[self.view layoutIfNeeded];

答案 1 :(得分:0)

当您使用Autolayout Constraint时,您应该更新Constraint而不是Frame

将@ Height constraintSuperview的{​​{1}}关联为@mistyhua建议。

现在当您更改IBOutlet的{​​{1}}时,不要更改超级视图的框架,而是更改高度约束值。

Height