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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xamarin iOS:滚动视图中的自动布局?相关的知识,希望对你有一定的参考价值。

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

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

enter image description here

答案

解释起来有点复杂。

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

然而,UIScrollViewUIView有点不同。一般来说,我们只需要设置left,right,top,bottom,但在UIScrollView中,它有一个名为contentSize的定义,它决定了scrollview的实际大小。所以我们上面设定的限制是不够的。

因此,作为一种变通方法,我们在scrollview中添加一个容器视图来确定contentSize。

1. Constraint on scrollview (green area in the following gif)

enter image description here

2. Constraint on container view.(red area in the following gif)

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

enter image description here

3. Constraint on inner view(blue area in the following gif)

enter image description here

Test result :

enter image description here

iPhone5S

enter image description here

iPad Air2

enter image description here

另一答案

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

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

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

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

以上是关于Xamarin iOS:滚动视图中的自动布局?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 从超级视图中删除对象会破坏自动布局并禁用滚动视图

自 IOS 8 以来使用自动布局和滚动视图的额外顶部空白

将编程创建的视图垂直添加到滚动视图中(iOS 中的线性布局)

尝试理解 iOS 8 中的 UIScrollView 自动布局

如何在运行时折叠 Xamarin.iOS 中的视图?

ios水平滚动视图和自动布局问题