【问题标题】:Full responsive UIView inside a UIScrollView using autolayout使用自动布局的 UIScrollView 内的完全响应式 UIView
【发布时间】:2014-10-08 16:38:09
【问题描述】:

我试图了解自动布局在 XCode6 下是如何工作的,但是有很多神秘的事情从我的脑海中消失。自动布局和约束原理可能很难学习,但我意识到使用这些工具可以让生活变得更轻松......

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

我阅读了很多教程并观看了很多视频,直到找到有用的教程Using UIScrollView with Auto Layout in iOS。 Github 中也有一个 Xcode 项目,其中包含本教程的说明。

Mike Woelmer 在他的教程中提到了这一点

旧的设置方法的一大痛点 UIScrollView 将内容大小传达给滚动视图。它 如果 UIScrollView 中的内容是图像。但如果 您的滚动视图包括混合的按钮、标签、自定义 视图和文本字段。需要进行冗长的代码调整 反映设备旋转和手机尺寸的不断变化 差异。

所以 Mike 解释了调整 UIView 的方法,使用占位符并强制滚动视图内的视图适合设备的屏幕,在 viewDidLoad 中创建一些 NSLayoutConstraint:

解决方案是查看滚动视图之外并附加一个 约束到视图控制器的主视图。这不能在 界面生成器,所以我们将不得不编写一些代码。界面 但是,builder 仍然在抱怨,所以我们必须添加一个占位符 宽度限制让它快乐。

我尝试将教程的部分代码用于我的项目,但我无法获得满足我需要的工作视图控制器(我总是会出错)。 执行此操作的最佳方法是什么?我走对了吗?

最后但同样重要的是,我是意大利人,请原谅我的英语。如果有不清楚的地方,请给我评论。

【问题讨论】:

    标签: objective-c cocoa uiscrollview autolayout xcode6


    【解决方案1】:

    基本上,您必须同时设置对齐和大小约束,以便 Autolayout 为您处理其余部分。如果您没有提供足够的信息,您会收到警告。如果您提供相互矛盾的信息,则会出现错误。

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

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

    您还可以配置您需要的关键约束,然后单击“解决自动布局问题”并选择“添加缺少的约束”,尽管有时它并不能满足您的需求。最好了解一下 Autolayout 是如何完成我上面描述的。

    如果你搞砸了,通常更容易清除所有约束并重新开始。多做几次,你就会掌握窍门。

    【讨论】:

    • 谢谢你,我现在正在努力完成这项任务,但有时我对此感到非常沮丧。
    • 如果您对我的回答有任何具体问题,请尽管问!
    • BelievesInSanta,我很感谢你,因为至少你回答了我,而且你的回答清晰而详尽。我不想和你争论,但谁在没有事先要求的情况下对我投了反对票,例如,添加更多信息。
    • 欢迎来到 SO,伙计 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2021-11-26
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2016-10-25
    相关资源
    最近更新 更多