一个APP产生多少次观看?
通过编码视图和创造力,该数字可能会比您想象的要少
我在本文中的动机是不评判工具。 但是,展示了另一种无需界面构建器的APP构建方法,即使用iOS本机API并通过创造力享受这一过程。 在这篇文章中,您将了解:
- 锚点布局
- 堆栈视图
- 依赖注入
- 数据流量
故事板? XIB? 编码视图?
从一个有争议的主题🙃开始。 我进入Xcode的第一步和一些专业的工作都是使用Storyboard完成的。 我无法想象有人可以用代码替换界面构建器的拖放。 因为,它非常简单,快速。
直到情节提要开始困扰我,然后才让XIB困扰。 在我更喜欢使用代码构建的视图之前,我非常抵制此更改。 但是有一天,我开始反思,得出结论,这是我的懒惰。 毕竟,当是全栈开发人员时,我写的是HTML,而不是拖放组件(例如旧的Dreamweaver)。 但是对我来说,Visual Format Language和NSLayoutConstraint
构造函数很无聊。
视觉格式语言对拼写错误非常敏感。 NSLayoutConstraint
的默认构造函数为long。
因此,我参加了Thiago Lioy @tpLioy关于视图代码的一些讨论。 在这些谈话中,他展示了如何将Storyboard项目迁移到使用Snapkit使用代码创建的视图。 结果令我惊讶的是,结果非常好。 这就是我开始喜欢查看代码的方式,谢谢@tpLioy。 但是我仍然想学习如何使用Apple为我们所做的事情。 那是我遇到锚定布局的时候。
NSLayoutAnchor
Apple文档将NSLayoutAnchor
描述为一个类工厂,旨在生成NSLayoutConstraint
对象。 NSLayoutConstraint
对象负责启用自动布局。
简而言之, NSLayoutAnchor
将使创建自动布局中使用的约束变得更加容易。 使用NSLayoutConstraint
方法代替使用NSLayoutConstraint
类的构造函数创建约束。 这样做的好处是代码更简洁,类型检查可以避免创建无效约束。 例如,此检查将不允许将X轴属性与Y轴属性混合。
尽管
NSLayoutAnchor
类提供了附加的类型检查,但仍然可以创建无效的约束。 例如,编译器允许您将一个视图的leadingAnchor
与另一个视图的leftAnchor
,因为它们都是NSLayoutXAxisAnchor
实例。 但是,“自动布局”不允许将前导和尾随属性与左或右属性混合使用的约束。 结果,此约束在运行时崩溃。
NSLayoutAnchor
行动时间
为了演示如何在实践中使用布局锚,我创建了一个Playground。 在这个操场上,会有一张名片清单。 根据用户选择的计划,卡片的视图不同。 考虑到这一点,我创建了下面的布局。
一切的根源
如您所见,所有名片都具有相同的数据。 但是,显示方式有所不同。 如果您曾经使用过前端Web,那么它就像只有一个HTML,并且每种布局都有不同的CSS。 因此,我将创建一个包含卡片组件所有元素且在“ css”之后的类。
结论
对于使用代码构建的视图,我们有几种解决方案,“没有灵丹妙药”。 从积极的方面来看,我们可以发挥创造力,提高工作效率。 我认为Interface Builder最终限制了我们并让我们适应了我们。
实际上,如果选择使用Storyboard或XIB,我们将绘制三个屏幕,而几乎没有重用。 另外,创建测试将更加困难,数据流量也将更加昂贵。
代码视图需要重新学习。 但这是一条低学习曲线。 尝试脱离Interface Builder的舒适范围,了解有关UIKit的更多信息,提高您的创造力,并在将来逐步提高您的生产率。