Xamarin iOS:滚动视图中的自动布局?
Xamarin iOS: Auto Layout within scroll view?
我的情节提要板上有一个 scrollView,我在上面添加了顶部、左侧、右侧、底部约束,以便它根据不同的屏幕尺寸自动调整大小。问题是,如果我在此滚动视图中添加图像视图或任何其他内容,并在此图像视图上放置约束以与滚动视图边界的顶部、左侧、右侧和底部保持一定距离。它只是行不通。我想根据目标设备的屏幕大小调整所有内容的大小。我怎么能这样做?
浅灰色区域是我的滚动视图,灰色区域是普通视图,最里面的元素是图像视图。
解释起来有点复杂
我们知道,在autolayout
开始工作之前,我们应该对它们设置约束,根据这些约束,编译器可以确定控件的Frame
(位置和大小)。
但是,UIScrollView
与 UIView
有点不同。一般来说,我们只需要设置 left,right,top,bottom
即可,但是在 UIScrollView
中,它有一个名为 contentSize 的定义,它决定了 scrollview 的实际大小。所以我们上面设置的约束是不够的。
因此,作为解决方法,我们在滚动视图中添加一个 容器视图 以确定内容大小。
1。对scrollview的约束(下图绿色区域)
2。对容器视图的约束。(下图红色区域)
注意:我们设置了额外的宽度(等于scrollview)来表示宽度是固定的,意思是我们不能水平滚动但允许垂直方向。
3。内部视图约束(下图蓝色区域)
测试结果:
iPhone5S
iPad空气2
我在努力解决这个问题时遇到了这个问题。接受的答案是非常正确的,即使它遗漏了一些细节。
这里我已经对所有的细节做了完整的回答,
我把它写在这里是因为它可能对以后的人有帮助。
我的情节提要板上有一个 scrollView,我在上面添加了顶部、左侧、右侧、底部约束,以便它根据不同的屏幕尺寸自动调整大小。问题是,如果我在此滚动视图中添加图像视图或任何其他内容,并在此图像视图上放置约束以与滚动视图边界的顶部、左侧、右侧和底部保持一定距离。它只是行不通。我想根据目标设备的屏幕大小调整所有内容的大小。我怎么能这样做?
浅灰色区域是我的滚动视图,灰色区域是普通视图,最里面的元素是图像视图。
解释起来有点复杂
我们知道,在autolayout
开始工作之前,我们应该对它们设置约束,根据这些约束,编译器可以确定控件的Frame
(位置和大小)。
但是,UIScrollView
与 UIView
有点不同。一般来说,我们只需要设置 left,right,top,bottom
即可,但是在 UIScrollView
中,它有一个名为 contentSize 的定义,它决定了 scrollview 的实际大小。所以我们上面设置的约束是不够的。
因此,作为解决方法,我们在滚动视图中添加一个 容器视图 以确定内容大小。
1。对scrollview的约束(下图绿色区域)
2。对容器视图的约束。(下图红色区域)
注意:我们设置了额外的宽度(等于scrollview)来表示宽度是固定的,意思是我们不能水平滚动但允许垂直方向。
3。内部视图约束(下图蓝色区域)
测试结果:
iPhone5S
iPad空气2
我在努力解决这个问题时遇到了这个问题。接受的答案是非常正确的,即使它遗漏了一些细节。
这里我已经对所有的细节做了完整的回答,
我把它写在这里是因为它可能对以后的人有帮助。