ScrollView中最后一个元素的坐标

时间:2016-12-16 13:25:03

标签: ios swift scrollview coordinates

我有这个滚动视图,里面有许多高度可变的元素。

我想知道是否有办法知道scrollview中最后一个元素的maxY,而不会增加scrollview中所有元素的高度。

我尝试过lastViewInScrollView.frame.maxY并且它不对。

1 个答案:

答案 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如下所示:

enter image description here

处理UIScrollView的约束:

  1. scollview限制:

    a)导致superview:0 // superview(VC mainView)

    b)追溯到superview:0

    c)topview to superview:0

    d)底部到superview:0

  2. 在scrollview中保留一个uiview(说myView)并给出限制:

    a)导致scollView:0

    b)跟踪到scollView:0

    c)top to scollView:0

    d)底部到scollView:0

    e)与主视图的宽度相等//假设您不想要水平滚动,否则不要给予

  3. 现在在myView中添加view1,添加约束 a)导致myView:0

    b)尾随myView:0

    c)top to myView:0

    d)恒定高度= height1

  4. 现在,view1.frame =(0,0,scW,height1)// scW是scrollViewWidth,你不需要设置这个框架。我只是在这里写一下来描述view1的框架。

    1. 现在在myView中添加view2,添加约束

      a)导致myView:0

      b)尾随myView:0

      c)top to view1:0

      d)恒定高度=高度2

    2. 重复到view9,

      1. 现在在myView中添加view10,添加约束

        a)导致myView:0

        b)尾随myView:0

        c)top to view9:0

        d)恒定高度=高度2

        e)底部到myView:0

      2. 如果您遇到问题如何设置帧,特别是当它们超出控制器视图时,请选择VC转到其属性并设置大小自由度并设置VC的任何高度,以便您可以设置所有帧。不要忘记设置这个VC大小来推断。

        注意:永远不要给scrollview赋予静态高度,scrollview本身会通过计算其组件的高度来计算它的高度,但请记住,你必须给它的顶部组件顶部constaraint值。 superview和最低组件底部组件和所有组件的高度(这里是UIView)。

        尝试以上程序,这是新的i scrollview的好习惯。

        如何设定SCOLLVIEW的动态高度I.E.一些观点正在根据内容改变高度

        让我们在上面的例子中,有三个视图(aView,bView,cView),高度是可变的(因为我们在设计时不知道它们的高度,但我们知道最小高度让Ha,Hb,Hc respec。)他们在视野中2。

        我们已经提供了view2的内容,现在将其高度关系从equalto(=)更改为greaterthanequalto(>=)

        1. aView的约束:

          a)top to view2:0

          b)导致view2:0

          c)追溯到view2:0

          d)恒定高度:Ha,关系为greaterthanequalto(>=)

        2. bView的约束:

          a)top to aView:0

          b)导致view2:0

          c)追溯到view2:0

          d)恒定高度:Hb,关系为greaterthanequalto(>=)

        3. cView的约束:

          a)top to bView:0

          b)导致view2:0

          c)追溯到view2:0

          d)恒定高度:Hc,关系为greaterthanequalto(>=)

          e)bottom to view2:0

        4. 注意每当您处理scrollview时,您必须执行相同操作,如果您的组件是动态的,请给出高度(保持最小高度)关系greaterthanequalto(>=)并且如果您的组件具有静态高度,则关系equalto(=)