【问题标题】:Xamarin iOS: Auto Layout within scroll view?Xamarin iOS:滚动视图中的自动布局?
【发布时间】:2018-03-11 08:36:50
【问题描述】:

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

浅灰色区域是我的滚动视图,灰色区域是普通视图,最里面的元素是图像视图。

【问题讨论】:

  • 你这样做会发生什么?
  • 嗨,您有什么问题吗?
  • @ColeXia 我迷路了。我已经为你的努力投票赞成你的回答。但不知何故,我还是无法让它发挥作用。我需要弄清楚的是如何创建一个类似于此的页面:ibb.co/kM7Lkb 有垂直滚动但没有水平滚动。如果我能弄清楚如何做到这一点,我认为我 80% 的问题都会得到解决。如果您愿意,我可以将其作为一个单独的问题发布。
  • @Arbaaz 你为什么不使用 UITableView?我认为这更容易满足您的要求。
  • 当你必须多次显示相同的内容时,不使用 UITableView 吗?我展示的图像只是一个例子。我认为 UITableView 不会更容易,因为每个单元格都没有文本框。页面可以包含各种元素的组合,例如文本字段、下拉菜单或图像。我想要的只是把它放在一个页面上,让 iOS 自动调整宽度并自行增加或减少垂直滚动。

标签: user-interface xamarin xamarin.ios autolayout ios-autolayout


【解决方案1】:

解释起来有点复杂。

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

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

因此,作为一种解决方法,我们在滚动视图中添加一个容器视图来确定 contentSize。

1。对滚动视图的约束(下 gif 中的绿色区域)

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

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

3。内视图约束(下图蓝色区域)

测试结果:

iPhone5S

iPad Air2

【讨论】:

  • 能否请您在蓝色区域添加一个文本字段。 (宽度几乎与蓝色区域本身相同?我一直在尝试,但文本字段在较小的屏幕上被截断,这意味着蓝色区域没有按照应有的方式调整大小。
  • @Arbaaz蓝色区域是你要放置的内部控件,如何设置textfield的约束
  • 您能以某种方式与我分享代码文件吗?我无法让它工作。
  • 我迷路了。我已经为你的努力投票赞成你的回答。但不知何故,我还是无法让它发挥作用。我需要弄清楚的是如何创建一个类似于此的页面:ibb.co/kM7Lkb 有垂直滚动但没有水平滚动。如果我能弄清楚如何做到这一点,我认为我 80% 的问题都会得到解决。如果您愿意,我可以将其作为一个单独的问题发布。
  • 我会在我的问题得到解决后立即标记它。我已经发布了另一个问题,也许你可以帮助我。 stackoverflow.com/questions/46642679/…
【解决方案2】:

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

这里我已经对所有细节做了完整的回答,

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多