【问题标题】:ios - UIScrollview w/ autolayout on Xcode 6ios - Xcode 6 上带有自动布局的 UIScrollview
【发布时间】:2014-10-30 07:34:42
【问题描述】:

我已经为这个实现苦苦挣扎了好几天,即使我已经尝试完成我在网络上找到的每一个教程,我仍然无法让事情按照我想要的方式工作。

基本上,我试图将我的登录表单放在滚动视图中,以便它首先占据整个屏幕(以及在所有 iPhone / iPad 上),如果出现键盘,一切都应该移动。问题是,我的视图没有占据整个屏幕......它太大或太高,即使在 Interface Builder 中所有接缝都是正确的(从布局到约束)。下面是我想要实现的布局的图像(我使用的是通用故事板,启用了 Size Classes 和 Autolayout):

http://img4.hostingpics.net/pics/829115app.png

有人可以指出我如何实现这种布局吗?

提前致谢。

【问题讨论】:

    标签: ios uiscrollview autolayout constraints


    【解决方案1】:

    我建议将滚动视图的顶部、前导和尾随空格固定到其父视图。如果将底部空间约束设置为 0,则将其设置为小于或等于键盘的高度,滚动视图将无法调整大小。

    随着您的表单布局设置垂直中心约束和顶部空间到超级视图约束,您的顶部标签大于或等于您在 IB 中设置的距离,然后您可以设置每个组件之间的相对空间约束。

    希望我回答了你的问题。

    编辑:只是提供的项目并让它工作。我认为问题是由于它是滚动视图中的容器视图。并且容器和 scrollViews 内容视图都适应其子视图的大小。因此,设置相对约束将无济于事。

    我所做的是为 containerView 设置一个显式大小(屏幕大小),并为其设置 setTranslatesAutoresizingMaskIntoConstraints(true)

    我修改了你的项目并上传了here

    【讨论】:

    • 我不知道 Interface Builder 中的键盘高度,因为它不会在开始时显示。我可以通过绑定事件keyboardDidShow来动态滚动滚动视图,效果很好。问题在于表单布局。我可以在 Interface Builder 中很好地设计它,但是它要么显示得太大,视图水平滚动,要么太长,视图垂直滚动。我希望滚动视图是全屏且不滚动,除非我在keyboardDidShow 上滚动 教程告诉我在滚动中放置一个容器视图并将内容放在那里,但它不起作用。
    • @LucioMerotta 您能否发布您在 IB 中和在模拟器上运行的视图的屏幕截图?
    • 是的,当然!您将按以下顺序找到截图here: - 约束 - 界面构建器中的布局 - iOS 模拟器的截图
    • @Lucio 嘿,我想你有same trouble I was having just yesterday with TableViews。问题是,您没有为您的滚动视图设置约束。由于在 iOS8 中引入了 Size Classes,默认情况下 IB 中的视图更大,因此您的 scrollView 保持与您在 IB 中设置的大小相同。尝试将滚动视图的顶部、前导和尾随空格固定到超级视图。你的 scrollView 比你的屏幕大。
    • 感谢您的快速回复!这就是我所做的!我将滚动视图的顶部(状态栏+20 分)、尾随、前导和底部空间固定到超级视图,并将容器视图的顶部、尾随、前导和底部空间固定到超级视图。我尝试重做此操作,但结果仍与屏幕截图中的相同...
    猜你喜欢
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 2015-01-16
    相关资源
    最近更新 更多