使用自动布局增加Scrollview中的视图高度

时间:2013-12-18 23:13:30

标签: ios animation height scrollview autolayout

view controller with constraints

此处的所有视图(导航栏除外)都在滚动视图中。所有scrollview的孩子都有固定的高度和垂直间距。顶部标签(感谢使用...)和底部按钮(Toggle)分别垂直固定在顶部和底部的滚动视图上。底部按钮也固定在底部布局指南上。

我想在红色视图上有一个灵活的高度。红色视图是唯一具有不等式约束的视图。高度> = 64

灵活的高度工作在于红色视图的高度自动扩展到152,以填充4''设备上的额外空间。

但是,我想进一步扩大身高。在代码中,当有人点击切换按钮时,我希望将红色视图的高度扩展为300,这就是300。

- (IBAction)toggle:(id)sender
{
    [self.scrollView layoutIfNeeded];
    [UIView animateWithDuration:1.0 animations:^{
        self.constraint.constant = 300;
        [self.scrollView layoutIfNeeded];
    }];
}

当我这样做时,我在控制台中收到错误。 “无法同时满足约束。”结束时,“将尝试通过打破约束来恢复”,并且它打破了我为300的高度设置的约束。

那么....我如何将红色视图的高度设置为300以上的大小?我假设我更新了它的高度约束条件,即scrollView的contentSize会自动调整,但这似乎并没有发生。

1 个答案:

答案 0 :(得分:1)

您正在正确设置代码中约束的高度。但是,您的布局需要进行一些调整才能使其正常工作。

看起来您正在将子视图添加到滚动视图本身。相反,您需要将内容视图添加到滚动视图,然后将子视图添加到内容视图。

有关如何使用UIScrollView使用自动布局的详细信息,请查看Apple的技术说明:developer iOS technotes

在您的特定情况下,我会使用Apple的所谓“混合方法”。在此方法中,您可以直接设置内容视图的框架和滚动视图的内容大小。计算高度将是一个痛苦。这涉及计算每个子视图加上边距和间隔物的高度。

相关问题