[英]AutoLayout on Xcode7
我很难理解Autolayout以及它如何对除我以外的其他所有人显着起作用。 问题是,当约束最终以一种分辨率(例如,iPad)为我工作时,它们不能满足iPhone4s之类的另一种要求,因此,这可能导致约束冲突,或者根本无法满足我的要求(例如,该按钮将在iPad上的文本字段附近显示,而在iPhone上不是很靠近)。 我已经阅读了Raywenderlich的Adaptive Layout教程以及Steven Lipton的有关Autolayout(Practical AutoLayout)的书 ,仍然遇到很多麻烦。 请帮帮我。 它是如此令人沮丧,以至于我想完全放弃编码并最终成为和尚之类的东西... x(
编辑
因此,为进一步帮助您,我将在一些快照的帮助下解释某些问题对我不起作用。 我最初的想法是显示4个视图,每个视图包含一个文本字段,按下特定按钮,这些字段将通过CoreAnimation过渡。 ViewController的视图在背景中具有一个图像,一个后退按钮,4个视图,一个进度条和一个用于显示每个视图的按钮。 问题如下; 尽管整个视图在模拟器上似乎是合适的,但我可以在xcode的终端中看到冲突。
具有所有元素的图像:
有冲突的图片:
但是以某种方式,如果我解决了冲突,则自动布局将无法在所有设备上正常运行。 例如
没有冲突,但是在iPhone4s的文本字段中隐藏了下一个按钮:
与iPad一样,没有任何冲突,并且可以非常方便地使用“下一步”按钮:
我该如何处理才能在所有设备上相同且连贯地工作。 请帮忙谢谢。
要了解的一件事是,对于大小差异很大的屏幕,AutoLayout不能解决您的所有问题(而且我仍然觉得尺寸类使用起来很麻烦)。 我通常坚持将两个不同的xib用于电话和平板电脑,并连接到同一视图控制器。 而且,如果可以的话,请放弃对iOS 7的支持,这将消除许多与AutoLayout有关的麻烦。
编辑
一定要使用自动布局 。 我所说的只是通常最好是使用两个不同的xib,以实现截然不同的分辨率,但是当然两者都使用自动布局。
我想从自动布局的经验中分享几件事。
现在,关于您的问题:出现键盘时,您都可以向上移动视图(相对于键盘的高度。如果您要在不以编程方式更改约束的情况下实现此目的,则此答案将为您提供帮助。否则,如果您已正确添加了约束,而不是create和IBOutlet,最顶部元素的top约束,并从该约束的常量中减去键盘高度(150);当键盘消失时,还需要在该约束的常量中添加键盘高度(150)。
尽管自动布局可以帮助管理它,但下一个按钮被键盘隐藏的问题与自动布局没有直接关系。 问题很简单,就是您在屏幕上使用的空间超过了可用空间。
有几种方法可以解决此问题:
您可以将内容嵌入滚动视图中,以便用户在滚动视图的内容超过可用高度时可以上下滚动屏幕。 自动布局将在这里有所帮助:您将在滚动视图的底部到底部布局指南中设置一个约束,为该约束添加一个出口,并且在代码中,您可以观察键盘的隐藏/显示/更改通知并调整该约束的常数
您可以调整布局,以便即使在键盘向上的情况下也始终可见,而无论键盘是否向上都不会改变任何位置。 这意味着您不会占用键盘会出现的任何空间
您可以根据键盘的存在动态地调整布局。 这会将第一个选项中的约束与其他约束组合在一起,以在该约束移动时将其移动。
在执行任何操作之前,请考虑一下您希望事情在不同情况下的外观如何。 然后建立将给出此结果的约束。 自动布局无法为您猜测您要做什么,您需要对所需布局有一个精确的了解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.