搜索堆栈溢出很多,但没有找到适合我们的解决方案。
我们所拥有的是几个观点以及UILabels
中的UIButtons
和UIScrollView
格式如下。点击按钮,我们隐藏了几个视图和标签,并试图重新计算UIScollView
高度。
UIScrollView
- > UIView的
- > UIView2
- > UIView3
- > UILabel1
- > UILabel2 (请注意这些标签不在UIView
内,它们会直接添加到scrollview
。这是正确的做法还是应该添加到内部一个UIView
?)
- > UITextField(直接添加到滚动视图)
- > UITextField1(直接添加到滚动视图)
- > UIButton (点击textfields
上方的按钮,并根据业务逻辑隐藏或显示标签)
当我们尝试重置UIScrollview
上UIButton
的尺寸时,请点击它并不能正确计算身高。尝试下面的堆栈溢出中很多答案共享的解决方案
UIScrollView
?UIScrollview
的高度? 我们不想使用AutoConstraint
CGRect contentRect = CGRectZero;for (UIView *view in uiScrollViewObj.subviews) {
contentRect = CGRectUnion(contentRect, view.frame);
}
uiScrollViewObj.contentSize = contentRect.size;
答案 0 :(得分:0)
如果结构是你说的那样,那么UIButton是最接近按钮的元素,你应该移动它的框架并将它放在上面,否则contentSize总是一样的。
除此之外,您的代码正在遍历scrollview的所有视图,这些视图不仅是您添加的视图,还包括Apple插入的视图。
答案 1 :(得分:0)
动态计算内容大小的最佳方法是对滚动视图子视图y位置及其高度求和。这样的事情应该有效:
CGFloat viewY, maxY=0;
for (UIView *view in uiScrollViewObj.subviews) {
if (view.hidden) continue;
viewY = view.frame.origin.y + view.frame.size.height;
maxY = (viewY > maxY) ? viewY : maxY;
}
[uiScrollViewObj setContentSize:CGSizeMake(uiScrollViewObj.frame.size.width, maxY)];