带有AutoLayout的UIScrollView和一个应该垂直居中的内部UIView

时间:2015-03-26 09:25:08

标签: ios objective-c uiscrollview

我有以下布局,我想使用AutoLayout在Interface Builder中创建。

  • 顶部的徽标(固定宽度,高度和位置
  • 底部的三个按钮应固定在控制器的底部
  • 一组按钮和字段,应在徽标和底部按钮之间的空间中垂直居中

只要我不引入UIScrollView,它就相当容易。我这样设置:

  • 徽标独立固定在顶部,水平居中,宽度和高度固定
  • 底部的按钮位于容器视图内,高度固定且宽度与控制器主视图相同
  • 中间的按钮和字段位于水平居中的容器内,并固定在标题和底部容器的顶部和底部,并且它具有灵活的高度(> =一定量) )

这很好用。但是当我显示键盘时我需要移动内容,因为文本字段最终会在3.5"设备。所以我在UIScrollView中嵌入了所有内容。

一旦我更改了UIScrollView底部的边缘插入(或者在我尝试的时候更改了UIScrollView底部约束的常量值),UIScrollView就变成了一种无限滚动视图。

我知道问题在于:

  • 底部容器连接到控制器视图的底部
  • 包含字段和按钮的容器具有可变高度

如果从底部容器中删除约束并将居中容器设置为固定高度,则UIScrollView的行为正确,但是当键盘不在时,我无法将底部的按钮保持与屏幕底部对齐#vis; t visibile。而且我不能将字段和按钮保持在标题和底部容器之间的空间中。

还有其他办法吗?

更新 这是我的最终渲染布局的截图:

rendered layout on the iPhone

以下是Interface Builder中的当前布局:

layout in interface builder

我打电话给的视图"中心视图"是应该在UIS​​crollView中垂直居中的那个。

现在,这是通过以下约束完成的:

Central View constraints

但是,因为容器视图称为" Bottom Buttons"被锚定在视图的底部,名为" Big Fake View"这只是一个与控制器主视图具有相同宽度和高度的视图,当调整UIScrollView的大小时,容器视图保持连接到底部,而中心视图"高度增长。那就是我现在被困住的地方。

0 个答案:

没有答案