如何使用AutoLayout滑动内容

时间:2015-05-06 20:45:45

标签: ios swift

我有一个消息传递视图,用户可以选择要添加到消息中的表情符号。我在键盘上方有一个栏,用户可以在其中输入他们的信息。它看起来像这样:H:|-[UIButton: emoticon]-[UITextField]-[UIButton: send]|

现在我试图通过将左边约束设置为constraint.constant -= screenWidth来滑动所有这些,但这似乎不起作用,因为我在日志中加载了“无法满足约束”消息他们都没动。我还有一个问题就是不知道放置表情符号的位置(它是一个UIButton的栏,每个表情符号都有一个表情符号。)

有没有办法以简单的方式做到这一点?

1 个答案:

答案 0 :(得分:2)

如果我理解你做得对(你的细节很少),你的问题就是你的约束仍然固定在开头和结尾。

在滚动任何内容之前,您可能需要删除最后一项的右边约束。

那就是说,在这种情况下我通常做的就是把所有应该滚动的内容包装在简单的UIView中。然后我可以保持它们的内部约束相同,只有UIView固定在其超视图的左侧和右侧。要滚动,我只需使用当前宽度添加宽度约束,删除右边约束,然后从左边约束的常量中减去它以将其滚动到屏幕外。

额外的视图让我保证一切都保持在动画开头的大小和位置,甚至可以让我优化动画(例如我可以在滚动之前光栅化视图,并且UIKit然后只需移动一层)。