一个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的更多信息,提高您的创造力,并在将来逐步提高您的生产率。