自动布局与帧大小

Mat*_*ger 5 frames pixels ios autolayout swift

所以我有点尴尬地问这个,因为它看起来很简陋,但自从开始iOS开发(大约一年的自我/互联网教学),当不使用故事板时,我非常依赖于框架大小和非常谨慎地使用自动布局.在目标CI中发现自己处于需要更频繁使用自动布局的情况,但是使用Swift我可以为框架的x和y起点,它的中心等设置动画......我从来没有遇到过我无法完成的情况想要单独使用帧大小和像素位置,我做了一些相当复杂的视图工作.我的问题是,使用自动布局而不是帧大小和像素位置有什么好处?由于无知和习惯,我不想错过一些很好的性能优势.非常感谢!

Jee*_*hut 16

tl; dr 了解如何使用自动布局 - 这对于真实世界的应用程序来说是一个巨大的节省时间!

答案很长:

最后,如果您想使用Apple提供的自动布局或大小类等功能,则由您决定.这些的主要好处并不是最终产品中UI渲染的真正表现.这是你需要投入到思考所有的特殊情况的时候,如果你计划开发工程上的应用程序不同的屏幕大小和方向.

假设您想要完成所有需要做的工作,以支持iPhone 4/4s屏幕尺寸,iPhone 5/5s屏幕尺寸,iPhone 6/6s(Plus)屏幕尺寸和iPad屏幕尺寸以及所有的纵向和横向模式以上屏幕尺寸自己(是一个很好的概述):嗯,它没有任何问题,只是为了它.当然,您需要非常仔细地测试内容并始终保持此列表的最新状态 - 在每个应用程序中您使用自己的解决方案.如果那是给你的,那就去吧.

但是大多数人都希望在没有过多的屏幕尺寸等问题的情况下解决他们的想法.您当然可以从一个应用程序中提取自己的逻辑,以便在所有应用程序中使用它,这正是自动布局和屏幕大小的含义.简而言之,Apple已经完成了所有工作,使您的框架设置在不同的屏幕上工作.你只需要使用他们的新词汇(Constraints)来使它工作.

换句话说:它是一个直接处理屏幕渲染逻辑抽象层.如果你不喜欢它,那就放手吧.但是如果你打算做一些应该在不同的iPhone/iPad上运行的严肃的应用程序,并且还计划维护那些,那么请学习如何使用自动布局和大小类来做事.它将在开发过程中节省您和所有未来的维护者.

一个很好的起点是文档.或者像raywenderlich.com上的这样一个教程.

Apple自己说了以下这个难题(在上面链接的文档中):

在许多方面,以编程方式定义视图的框架提供了最大的灵活性和功能.当发生变化时,您可以根据需要进行任何更改.但是,由于您还必须自己管理所有更改,因此布置简单的用户界面需要花费大量精力进行设计,调试和维护.创建真正的自适应用户界面会使难度增加一个数量级.

BTW: 使用自动布局或框架关于编程语言没有任何区别:Swift和Objective-C都非常好地支持这两种方式.看来你还没有找到如何改变Obj-C中的帧.;)

还有一件事:也不需要使用Storyboard来使用自动布局.您可以使用代码中的自动布局.请参阅此处的文档.甚至有很多框架试图让这更容易(Apple的原始API在许多方面往往不是很漂亮),我可以推荐SnapKit.