使用autolayout在UIScrollView中实现全响应的UIView

4
我正在尝试理解XCode6下自动布局的工作原理,但有很多神秘的东西让我无从下手。自动布局和约束的哲学可能很难学习,但我意识到使用这些工具可以使生活变得更加轻松...
供您参考,我需要构建一个聊天视图,其中包含一个表格(消息)和一个包含文本字段(发送消息窗格)的视图嵌套在一个UIView中,该UIView再次嵌套在UIScrollView中,以便在textfield下方出现键盘时将滚动视图向上移动。
我阅读了很多教程并观看了很多视频,直到我找到了有用的教程Using UIScrollView with Auto Layout in iOS。该教程还有一个Github上的Xcode项目来解释教程内容。
在他的教程中,Mike Woelmer说:
在旧的UIScrollView中设置内容大小时,最大的痛点之一是要将内容大小通知滚动视图。如果UIScrollView中的内容是图像,则计算内容大小相对简单。但如果您的滚动视图包括按钮、标签、自定义视图和文本字段等各种元素,则不太容易。需要进行冗长的代码调整以反映设备旋转和手机尺寸差异的不断变化。
因此,Mike解释了如何适应UIView,使用占位符并强制将视图放置在滚动视图内以适应设备屏幕,在viewDidLoad中创建了一些NSLayoutConstraint:
解决方案是查看滚动视图外部并将约束附加到视图控制器的主视图。这不能在界面构建器中完成,因此我们必须编写一些代码。虽然界面构建器仍在抱怨,但我们必须添加一个占位符宽度约束以使其满意。
我尝试使用教程的代码部分来为我的项目创建工作视图控制器,但我无法满足我的需求(我总是出错)。哪种方法最好?我走在正确的道路上吗?

enter image description here

最后但同样重要的是,我是意大利人,所以请谅解我的英语。如果有什么不够清晰,请留下评论。

1个回答

4
基本上,您需要设置对齐和大小约束,以便Autolayout为您处理其余部分。如果您没有提供足够的信息,则会收到警告。如果您提供了冲突的信息,则会出现错误。
您需要基本上提供足够的信息,以便Autolayout计算UIView框架属性(即x位置,y位置,宽度,高度)。
例如,通过提供从顶部,右侧,底部和左侧边缘的距离约束,Autolayout具有足够的信息来绘制该UIView的框架矩形。但是,您也可以仅提供从顶部和左侧边缘的距离约束,然后提供大小和高度约束。
您还可以配置所需的关键约束,然后单击“解决自动布局问题”并选择“添加缺少的约束”,尽管有时它不会给您想要的结果。最好了解Autolayout如何实现我上面描述的内容。
如果出错,通常最容易清除所有约束并重新开始。做几次,您就会掌握它。

谢谢,刚才我正在尝试完成这个任务,但有时候我会感到非常沮丧。 - RikiRiocma
如果您对我的回答有任何疑问,请随时提出! - JackyJohnson
BelievesInSanta,我很感激你至少回答了我的问题,而且你的回答清晰详尽。我并不想和你争论,但是对于那些在没有先询问我之前就给我投反对票的人,我想说他们需要多加一些信息。 - RikiRiocma
1
欢迎来到SO,伙计 :) - JackyJohnson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接