首页 文章

Xamarin iOS:滚动视图中的自动布局?

提问于
浏览
0

我在故事板上有一个scrollView,我在其上添加了top,left,right,bottom约束,以便根据不同的屏幕大小自动调整大小 . 问题是,如果我在此滚动视图中添加图像视图或任何其他内容,并在此图像视图上放置约束以保持与滚动视图边界的顶部,左侧,右侧和底部之间的一些距离 . 它只是不起作用 . 我想根据目标设备的屏幕大小调整所有内容的大小 . 我怎么能这样做?

浅灰色区域是我的滚动视图,灰色区域是平面视图,最内层元素是imageview .

enter image description here

2 回答

  • 0

    解释起来有点复杂 .

    我们知道,在 autolayout 开始工作之前,我们应该对它们设置约束,根据这些约束条件,编译器可以确定控件上的 Frame (位置和大小) .

    但是, UIScrollViewUIView 略有不同 . 通常,我们只需要设置 left,right,top,bottom ,但在 UIScrollView 中,它有一个名为 contentSize 的定义,它定义了scrollview的实际大小 . 所以我们上面设定的限制是不够的 .

    因此,作为一种解决方法,我们在scrollview中添加 container view 来确定contentSize .

    1. scrollview上的约束(以下gif中的绿色区域)

    enter image description here

    2.容器视图上的约束 . (以下gif中的红色区域)

    注意:我们设置额外的宽度(等于scrollview)以指示宽度是固定的,意味着我们不能水平滚动但允许垂直方向 .

    enter image description here

    3.内部视图上的约束(以下gif中的蓝色区域)

    enter image description here

    测试结果:

    enter image description here

    iPhone5S

    enter image description here

    iPad Air2

    enter image description here

  • 1

    我在努力解决这个问题时遇到过这个问题 . 接受的答案是完全正确的,即使它遗漏了一些细节 .

    在这里,我已经完整地回答了所有细节,

    https://stackoverflow.com/a/49096334/3765617

    我在这里写它是因为它可能会对将来的某些人有所帮助 .

相关问题