在情节提要中加载笔尖

Earnest最近发布了首个iOS应用。 下面,我分享了我们如何设计的一些细节。

笔尖和情节提要似乎无法相处。

想象一下一个iOS应用程序,该应用程序使用情节提要来布置视图控制器。 在某个时候,您想要创建一个名为MyView的UIView子类,用笔尖实现其布局,并使其出现在情节提要的视图控制器中。 创建MyView之后,将UIView对象拖到视图控制器中,然后将UIView的类更改为MyView。 “做完!” 你想自己。 您在运行应用程序时期望看到自己的工作成果,但是相反,您只会看到空白。

问题在于情节提要板默认情况下会忽略笔尖。 因此,您需要采取一些其他配置步骤。

您将在堆栈溢出详细说明方法上找到一些好评如潮的响应,详细说明了将笔尖配置为在情节提要中出现的最差方法:在情节提要中创建一个容器,将插座手动重新连接到新实例,或创建另一个UIView包含子视图。

我发现这些太多了。 每次使用自定义笔尖时,我都必须重复这些步骤之一,如果错过了某个步骤怎么办?

将UIView子类与程序化布局一起使用时 ,只有三个步骤。 我进行布局,将UIView对象拖到我的视图控制器上,然后设置我的自定义子类。 那行得通。 我希望从笔尖查看该行为:

我不要

  • 每个笔尖和/或视图控制器的样板代码。
  • 额外的意见浮动。
  • 用其他东西包裹我的笔尖。

我要

  • 在情节提要板上添加的所有约束都可以使用。
  • 通过情节提要添加的所有子视图都将出现。
  • 通过情节提要设置的任何UIView属性都将应用。

查看Swift ESTNib UIView扩展。

要使用,只需将扩展名添加到您的项目中,并为您的笔尖命名与您的子类相同的名称(即MyView.swiftMyView.nib )。

它是如何工作的?

如果存在与当前类同名的nib文件,该扩展将覆盖awakeAfterUsingCoder 。 它使用笔尖创建视图的新实例,将属性和约束从原始笔尖转移到新实例,并返回新实例以供视图控制器显示。

特别感谢XXNibBridge的创建者Sunnyxx,该目标具有相似的目标。 两个项目之间的主要区别包括

  1. ESTNib传输NSLayoutConstraints的属性。
  2. ESTNib不需要您的视图就可以遵守协议。
  3. ESTNib通过覆盖工作,而XXNibBridge使用毛毛雨。
  4. ESTNib支持添加情节提要的子视图及其约束。

未来的改进

ESTNib也应该能够从UIView子类反映定制的IBInspectable故事板属性。

检查我们

认真今天启动了我们的iOS应用程序! 对于我们目前的客户来说,这是通过Earnest管理您的贷款并推荐朋友的好方法。 对于其他所有人,您可以开始使用负担得起的学生贷款再融资或个人贷款。 在这里免费下载!