故事板与以编程方式在Swift中

在创建界面时,Swift社区一直在使用情节提要和程序化进行激烈辩论。 看起来苹果一直在推动社区使用故事板,并将其用作未来的标准。 但是,使用情节提要仍存在一些缺点。 我想简要讨论使用每种方法的优点,并谈谈我使用每种方法的个人经历。

故事板

1.易于使用

刚开始学习iOS开发时,我被教使用情节提要。 我认为这很简单而且容易学习。 经过一两天的学习故事板,它只需快速点击即可。 如果我需要使用按钮,标签,文本字段或segue创建一个新的视图控制器,则很容易实现。 只需单击几下并拖放,即可为应用程序创建一个简单的布局。 与以编程方式进行比较相比,仅创建布局可能会成为一个漫长的过程。 这是程序约束的示例:

 让sampleView = UIView() 
  view.addSubview(sampleView) 
  sampleView.translatesAutoresizingMaskIntoConstraints = false 
  sampleView.centerXAnchor.constraintEqualToAnchor(view.centerXAnchor).active = true 
  sampleView.centerYAnchor.constraintEqualToAnchor(view.centerYAnchor).active = true 
  sampleView.widthAnchor.constraintEqualToAnchor(view.widthAnchor).active = true 
  sampleView.heightAnchor.constraintEqualToAnchor(view.heightAnchor).active = true 

您可以看到仅创建一个简单视图就需要很多代码。 现在,假设对所有按钮,标签,文本字段等执行此操作,可能会变得很乏味。 重要的是要包含translatesAutoresizingMaskIntoConstraints.active = true ,否则我们的视图将不会显示。 很多时候,我会忘记包括这两行代码,并且想知道为什么我的视图不会显示。

2.视觉

使用情节提要的主要优点之一是,它可以为您的应用程序提供很好的视觉表示。 您知道每个按钮,标签,文本字段和视图的外观。 只需单击几下并进行调整,即可轻松创建整个视图。 此外,还会在视觉上呈现约束,对约束的任何调整都将以不同的颜色显示。

程式化

1.控制

对所有UI元素进行编码将给您一种控制感。 通过StoryBoard可以实现的任何事情,都可以通过代码来完成。 您确切知道可以为UI元素创建哪种设置。 例如,如果我决定将一种字体设为粗体,则必须单击我的所有UI元素并将其更改为粗体,您会发现您可能会很容易忘记进行更改。 在代码中更改设置很容易,因为您确切知道所有UI元素的放置位置。

2.可重用性

我知道我已经提到过,在代码中创建一个简单的视图可能是一个漫长而艰巨的过程,但是我们可以在整个项目中重用这些代码。 如果要在视图中创建标签,则可以复制大部分代码,并进行一些小的调整。 繁荣! 有我的标签。 另一种情况是,如果我想使用与上一个项目相同的布局,则只需复制和粘贴即可。 繁荣! 这是我的整个布局。

3.混乱和导航

我不喜欢使用Storyboard的主要原因之一是当它变得混乱时。 在Storyboard的初始阶段,这似乎不是问题,但是一旦填充了UI元素和控制器,就很难导航。 通常,当我想调整标签的位置时,实际上是在单击其他不相关的内容。 这可能会令人头疼。 解决方案是实际放大和缩小,但是我发现这不是可行的解决方案。

4.合并冲突

这是我拒绝使用Storyboard的主要原因。 在我的最后一个项目中,我与其他3个开发人员一起工作,我们中的一些人喜欢在脚本中使用Storyboard,而另一些人则喜欢在代码中使用,当我们决定在GitHub上合并工作时,复杂性开始出现。 解决合并冲突非常困难。 这使得在同一个Storyboard上进行工作变得很麻烦。 这不是一个简单的任务,因为我们的Storyboard合并冲突不仅包含代码,还包含呈现UI的代码。