我有这个滚动视图,里面有许多高度可变的元素。
我想知道是否有办法知道scrollview中最后一个元素的maxY,而不会增加scrollview中所有元素的高度。
我尝试过lastViewInScrollView.frame.maxY并且它不对。
答案 0 :(得分:0)
这完全是数学,因为你说你不想在最后一个元素之前添加所有元素,好吧,现在可以使用scrollview的结尾了。 根据apple文档(https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithScrollViews.html),要正确处理scrollView,你必须添加一个UIView(让我们说myView),然后添加你的组件。
假设你有一个包含10个不同高度的UIView(view1,view2,... view10)的scrollview,你的viewController如下所示:
处理UIScrollView的约束:
scollview限制:
a)导致superview:0 // superview(VC mainView)
b)追溯到superview:0
c)topview to superview:0
d)底部到superview:0
在scrollview中保留一个uiview(说myView)并给出限制:
a)导致scollView:0
b)跟踪到scollView:0
c)top to scollView:0
d)底部到scollView:0
e)与主视图的宽度相等//假设您不想要水平滚动,否则不要给予
现在在myView中添加view1,添加约束 a)导致myView:0
b)尾随myView:0
c)top to myView:0
d)恒定高度= height1
现在,view1.frame =(0,0,scW,height1)// scW是scrollViewWidth,你不需要设置这个框架。我只是在这里写一下来描述view1的框架。
现在在myView中添加view2,添加约束
a)导致myView:0
b)尾随myView:0
c)top to view1:0
d)恒定高度=高度2
重复到view9,
现在在myView中添加view10,添加约束
a)导致myView:0
b)尾随myView:0
c)top to view9:0
d)恒定高度=高度2
e)底部到myView:0
如果您遇到问题如何设置帧,特别是当它们超出控制器视图时,请选择VC转到其属性并设置大小自由度并设置VC的任何高度,以便您可以设置所有帧。不要忘记设置这个VC大小来推断。
注意:永远不要给scrollview赋予静态高度,scrollview本身会通过计算其组件的高度来计算它的高度,但请记住,你必须给它的顶部组件顶部constaraint值。 superview和最低组件底部组件和所有组件的高度(这里是UIView)。
尝试以上程序,这是新的i scrollview的好习惯。
如何设定SCOLLVIEW的动态高度I.E.一些观点正在根据内容改变高度
让我们在上面的例子中,有三个视图(aView,bView,cView),高度是可变的(因为我们在设计时不知道它们的高度,但我们知道最小高度让Ha,Hb,Hc respec。)他们在视野中2。
我们已经提供了view2的内容,现在将其高度关系从equalto(=)
更改为greaterthanequalto(>=)
。
aView的约束:
a)top to view2:0
b)导致view2:0
c)追溯到view2:0
d)恒定高度:Ha,关系为greaterthanequalto(>=)
bView的约束:
a)top to aView:0
b)导致view2:0
c)追溯到view2:0
d)恒定高度:Hb,关系为greaterthanequalto(>=)
cView的约束:
a)top to bView:0
b)导致view2:0
c)追溯到view2:0
d)恒定高度:Hc,关系为greaterthanequalto(>=)
e)bottom to view2:0
注意每当您处理scrollview时,您必须执行相同操作,如果您的组件是动态的,请给出高度(保持最小高度)关系greaterthanequalto(>=)
并且如果您的组件具有静态高度,则关系equalto(=)