所以我是iOS开发的新手,我发现以编程方式编写视图更容易。所以我的观点有UIViews,ScrollViews,UIButton,UILabel都是以编程方式创建和定位的。 (所以我从未使用过AutoLayouts。)
我现在已经完成了我的应用程序,想要制作iPad视图,并意识到这样做也许是一个坏主意。
这是不好的做法,还是我应该尽可能多地使用自动布局?
如果可以做到这一点我现在正在做什么,为iOS和iPad添加不同视图的正确方法是什么?我在下面看到了关于如何找到设备的这个答案,是一个简单的if else声明是否足够? - iOS: How to determine the current iPhone/device model in Swift?
答案 0 :(得分:3)
我正在使用实时应用程序中的程序化视图并且它非常棒。一群人我也认识我们。
这是一个我用来在两种方法之间进行选择的算法:
制作应该在没有自动布局的情况下旋转的应用程序也更难。因为使用代码执行此操作需要比自动布局更多的工作。大多数优秀的应用程序都不使用此功能,所以我不会发现太多问题。
一个好的提示是在编写程序化UI时永远不要使用常量。
如果要创建宽度为100px的按钮,请不要在代码中的任何位置键入100px。而是根据屏幕尺寸计算屏幕尺寸并放置主视图。然后根据主视图的位置放置子视图或辅助视图。如果您正确执行此操作,您将拥有比自动布局更强大的多设备布局支持。
这是我写的一个小图书馆,请检查并播放有关我如何放置视图的代码:https://github.com/goktugyil/CozyLoadingActivity/blob/master/CozyLoadingActivity.swift
这里有一篇我喜欢的好文章: http://www.toptal.com/ios/ios-user-interfaces-storyboards-vs-nibs-vs-custom-code
答案 1 :(得分:1)
这很好,如果你有足够的时间,耐心,良好的计算技能和不同UI元素之间的关系配置。
但是,使用自动布局非常有用,而且比手动计算耗时少。
我们可以轻松创建动态且多功能的界面,以最小的努力适当地响应屏幕尺寸,设备方向和本地化的变化。
阅读Adopting Auto Layout,在现有应用程序中实施自动布局
答案 2 :(得分:0)
<强> TL; DR 强>
取决于
更长版本
显然,一种尺寸并不适合所有人。 AutoLayout在Interface Builder和代码中都非常强大(无论是视觉语言格式,还是简单的约束设置),但有时它似乎只是“用左手揉搓右耳” - 这是以编程方式添加视图的时候。但要注意在每个视图控制器中没有不同之处 - 你不想在项目中引入太多的复杂性,对吗?
我个人喜欢尽可能多地使用AutoLayout,每当我不能再使用它时,或者StoryBoard View会因为数百万的限制而变得混乱,我尝试将视图分成容器 - 让容器调整大小通过AutoLayout并通过代码处理子视图。
示例将是一个自定义媒体播放器 - 也许我想在视频下方和上方有两条条纹 - 我可以通过AutoLayout处理视频和两条UIView扩展条纹。但是条带本身的子视图(控件)将通过代码添加。它让我可以控制我的代码,但它仍然没有引入太多的复杂性。
答案 3 :(得分:0)
首先 - 如果你想为iOS开发,你必须学习Autolayout。已经有很多不同的设备different resolutions,未来可能会更多。
中学 - 如果你想与IB有效合作,你必须阅读guide /观看教程视频并进行一些练习。它可能很难开始,但随后你会发现IB功能强大,速度快,而且往往是开发GUI的最佳方式。通常,但并不总是!
代码优势:
总结一下 - 如果您不需要IB优势(例如GUI非常简单并且不使用Autolayout),通过代码开发GUI可以更容易,更快捷。但是如果您必须支持不同的分辨率和/或每个视图控制器中有数百行GUI代码,我强烈建议您尝试使用IB。