gpt4 book ai didi

ios - 具有动态高度的 subview 的自动布局 UIScrollView

转载 作者:IT老高 更新时间:2023-10-28 11:43:49 24 4
gpt4 key购买 nike

我在使用自动布局约束时遇到了 UIScrollView 的问题。我有以下 View 层次结构,通过 IB 设置约束:

- ScrollView (leading, trailing, bottom and top spaces to superview)
-- ContainerView (leading, trailing, bottom and top spaces to superview)
--- ViewA (full width, top of superview)
--- ViewB (full width, below ViewA)
--- Button (full width, below ViewB)

ViewA 和 ViewB 的初始高度为 200 点,但可以通过单击垂直扩展至 400 点的高度。 ViewA 和 ViewB 通过更新它们的高度约束(从 200 到 400)来扩展。这是相应的片段:

if(self.contentVisible) {
heightConstraint.constant -= ContentHeight;
// + additional View's internal constraints update to hide additional content
self.contentVisible = NO;
} else {
heightConstraint.constant += ContentHeight;
// + additional View's internal constraints update to show additional content
self.contentVisible = YES;
}

[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:.25f animations:^{
[self.view layoutIfNeeded];
}];

我的问题是,如果两个 View 都展开,我需要能够滚动才能看到整个内容,而现在滚动不起作用。如何使用约束来更新 ScrollView 以反射(reflect) ViewA 和 ViewB 高度的变化?

目前我能想到的唯一解决方案是在动画后手动设置ContainerView的高度,这将是ViewA + ViewB + Button的高度之和。但我相信有更好的解决方案?

谢谢

最佳答案

我使用如下纯结构

-view
-scrollView
-view A
-view B
-Button

确保 Button(THE LAST view) 有一个约束(从其底部到父 View 的垂直间距,即 ScrollView ),在这种情况下,无论您的 View A 和 View 发生什么变化B 是,scrollView 的高度会相应改变。

我引用了这个伟大的在线book site .

只需阅读“创建 ScrollView ”部分,您应该会有一个想法。

我在创建详细 View 时遇到了类似的问题,并且使用具有自动布局的 Interface Builder 非常适合该任务!

祝你好运!

(其他资源:

关于 auto layout for scroll view 的堆栈溢出讨论.

iOS 6 有一个 Release Notes谈论对 UIScrollView 的自动布局支持。

免费在线iOS book explanation关于 ScrollView 。这实际上对我帮助很大!

关于ios - 具有动态高度的 subview 的自动布局 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16825189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com