繁体   English   中英

Xcode7上的自动版式

[英]AutoLayout on Xcode7

我很难理解Autolayout以及它如何对除我以外的其他所有人显着起作用。 问题是,当约束最终以一种分辨率(例如,iPad)为我工作时,它们不能满足iPhone4s之类的另一种要求,因此,这可能导致约束冲突,或者根本无法满足我的要求(例如,该按钮将在iPad上的文本字段附近显示,而在iPhone上不是很靠近)。 我已经阅读了Raywenderlich的Adaptive Layout教程以及Steven Lipton的有关Autolayout(Practical AutoLayout)的书 ,仍然遇到很多麻烦。 请帮帮我。 它是如此令人沮丧,以至于我想完全放弃编码并最终成为和尚之类的东西... x(

编辑

因此,为进一步帮助您,我将在一些快照的帮助下解释某些问题对我不起作用。 我最初的想法是显示4个视图,每个视图包含一个文本字段,按下特定按钮,这些字段将通过CoreAnimation过渡。 ViewController的视图在背景中具有一个图像,一个后退按钮,4个视图,一个进度条和一个用于显示每个视图的按钮。 问题如下; 尽管整个视图在模拟器上似乎是合适的,但我可以在xcode的终端中看到冲突。

具有所有元素的图像:

具有所有元素的图像

有冲突的图片:

有冲突的形象

但是以某种方式,如果我解决了冲突,则自动布局将无法在所有设备上正常运行。 例如

没有冲突,但是在iPhone4s的文本字段中隐藏了下一个按钮:

没有冲突,但在iPhone4s的文本字段中隐藏了下一个按钮

与iPad一样,没有任何冲突,并且可以非常方便地使用“下一步”按钮:

没有冲突,非常容易使用“下一步”按钮

我该如何处理才能在所有设备上相同且连贯地工作。 请帮忙谢谢。

要了解的一件事是,对于大小差异很大的屏幕,AutoLayout不能解决您的所有问题(而且我仍然觉得尺寸类使用起来很麻烦)。 我通常坚持将两个不同的xib用于电话和平板电脑,并连接到同一视图控制器。 而且,如果可以的话,请放弃对iOS 7的支持,这将消除许多与AutoLayout有关的麻烦。

编辑

一定要使用自动布局 我所说的只是通常最好是使用两个不同的xib,以实现截然不同的分辨率,但是当然两者都使用自动布局。

我想从自动布局的经验中分享几件事。

  1. 如果您希望元素显示在特定位置(右侧20个点,顶部40个点),则需要在情节提要中调整按钮,并添加尾随和顶部约束。 Xcode会给您建议来修复元素的高度/宽度。 如果希望与情节提要中的高度高度完全相同,则调整元素的大小或添加高度和宽度约束。
  2. 如果要让en元素根据不同屏幕尺寸的高度宽度展开/收缩,请添加-lead,-trailing,-top和bottom约束。
  3. 重要:当我们“固定”元素(例如按钮)(顶部,底部,前导,尾随)时,这些约束是相对于其他元素(例如其他按钮)添加的。 在这种情况下,请确保其他元素具有约束。 否则,Xcode将给出缺少约束的错误。
  4. 不要像Xcode所建议的那样添加缺少的约束,因为Xcode会添加一些约束,这将导致意外的大小。

现在,关于您的问题:出现键盘时,您都可以向上移动视图(相对于键盘的高度。如果您要在不以编程方式更改约束的情况下实现此目的,则答案将为您提供帮助。否则,如果您已正确添加了约束,而不是create和IBOutlet,最顶部元素的top约束,并从该约束的常量中减去键盘高度(150);当键盘消失时,还需要在该约束的常量中添加键盘高度(150)。

尽管自动布局可以帮助管理它,但下一个按钮被键盘隐藏的问题与自动布局没有直接关系。 问题很简单,就是您在屏幕上使用的空间超过了可用空间。

有几种方法可以解决此问题:

  • 您可以将内容嵌入滚动视图中,以便用户在滚动视图的内容超过可用高度时可以上下滚动屏幕。 自动布局将在这里有所帮助:您将在滚动视图的底部到底部布局指南中设置一个约束,为该约束添加一个出口,并且在代码中,您可以观察键盘的隐藏/显示/更改通知并调整该约束的常数

  • 您可以调整布局,以便即使在键盘向上的情况下也始终可见,而无论键盘是否向上都不会改变任何位置。 这意味着您不会占用键盘会出现的任何空间

  • 您可以根据键盘的存在动态地调整布局。 这会将第一个选项中的约束与其他约束组合在一起,以在该约束移动时将其移动。

在执行任何操作之前,请考虑一下您希望事情在不同情况下的外观如何。 然后建立将给出此结果的约束。 自动布局无法为您猜测您要做什么,您需要对所需布局有一个精确的了解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM