使用自动布局在UIScrollView内完全响应UIView

问题描述:

我想了解自动布局如何在XCode6下工作,但是有很多神秘的东西从我的脑海中消失。 Autolayout和constraints philosofy可能很难学,但我意识到使用这些工具可以使生活变得更容易...使用自动布局在UIScrollView内完全响应UIView

为了您的信息,我需要建立一个带有表格(消息)和视图的聊天视图包含一个嵌套在UIView中的文本字段(发送消息窗格),该字段又嵌套在UIScrollView中,所以当键盘出现在文本字段下时,我可以向上移动滚动视图。

我读了很多教程,并观看了很多视频,直到我找到有用的教程Using UIScrollView with Auto Layout in iOS。 Github中还有一个Xcode项目,内容是本教程解释的内容。

在他的教程中,麦克Woelmer告诉

一个与建立 的UIScrollView的老办法的大痛点是沟通的内容大小滚动视图。如果UIScrollView中的 内容是图片,则它 相当简单,可以计算您的内容大小。但是,如果您的滚动视图中包含按钮,标签,自定义 视图和文本字段的混合包,它并不容易。需要长时间的代码调整以便 反映设备旋转的不断变化和手机尺寸 的差异。

所以迈克解释,以适应UIView的方式,使用占位符,并迫使以适应设备的屏幕滚动视图中的观点,在viewDidLoad中创建一些NSLayoutConstraint:

的解决方法是外看滚动视图并将约束附加到视图控制器的主视图。这不能在 接口生成器中完成,所以我们将不得不编写一些代码。接口 建设者仍然抱怨,但是,所以我们必须添加一个占位符 宽度约束,以使它感到高兴。

我试图使用本教程的代码的一部分为我的项目,但我无法得到我的需要工作的视图控制器(我总是得到错误)。 这是最好的方法吗?我在正确的道路上吗?

enter image description here

最后但并非最不重要的,我是意大利人,所以请原谅我的英语水平。如果事情不够清楚,请给我留言。

基本上你必须设置对齐和尺寸约束,以便Autolay为你处理剩下的问题。如果你没有提供足够的信息,你会得到警告。如果您提供相冲突的信息,则会出现错误。

您基本上需要为Autolayout提供足够的信息来计算UIView框架属性(即x位置,y位置,宽度,高度)。

例如,通过从顶部,右侧,底部和左侧边缘提供距离约束,Autolay拥有足够的信息来绘制UIView的框架矩形。但是,您也可以仅提供顶部和左侧边缘的距离约束,然后提供大小和高度约束。

你也可以配置你需要的关键约束,然后点击'解决自动布局问题',然后选择'添加缺少的约束',虽然有时它不会给你你想要的。最好了解Autolayout如何完成我上面描述的内容。

如果你搞砸了,清除所有约束并重新开始通常会更容易。多做几次,你会得到它的诀窍。

+0

谢谢,刚才我正在努力完成这项任务,但有时我会对此感到非常沮丧。 – RikiRiocma 2014-10-08 20:08:30

+0

如果您有关于我的回答的具体问题,请立即提问! – believesInSanta 2014-10-08 20:18:39

+0

相信圣诞老人,我很感激你,因为至少你回答了我,你的回答是清楚而详尽的。我不想和你争论,但是在没有首先询问的情况下,谁就低估了我的想法,例如增加更多的信息。 – RikiRiocma 2014-10-08 20:37:03