Swift如何改善自动版式?
如果使用自动布局,请举手。
以编程方式举手。
如果您想要一种简单的书写方式,请举手。
有很多开源项目试图使处理自动版式变得更容易。 (即砌体,PureLayout,制图)
我在这里通过介绍DHConstraintBuilder向您展示更快捷的方法。
您可能会想,“我为什么要打扰您?”,这是一个很公平的问题。 DHConstraintBuilder可以使用最少的代码来表达约束,但又不会失去任何意义。 它可以直观地显示约束的外观,同时生成有用的约束。
假设您有两个视图,并且要在它们之间放置默认填充。 使用自动版式时,该距离通常为8像素。 下面是将DHConstraintBuilder与NSLayoutConstraint进行比较的示例。
代码看起来如何? (以下两个示例在功能上等效)
使用NSLayoutConstraint:
使用DHConstraintBuilder:
让我们分解一下:
// 1
-greenView和redView在水平轴上之间有15.5像素
-greenView在其超级视图的前导约束上具有默认填充
-redView在其超级视图的尾随约束上具有默认填充
// 2
-blueView在其超级视图的前导约束上具有默认填充
-blueView在其超级视图的尾随约束上具有默认填充
// 3
-greenView在其超级视图的顶部约束上具有默认填充
-greenView在垂直轴上具有与blueView的默认距离
-blueView在其超级视图的底部具有默认填充
// 4
-redView在其超级视图的顶部约束上具有默认填充
-redview在垂直轴上具有与blueView的默认距离
// 5
-greenView和redView具有相等的宽度
// 6
-greenview和blueView的高度相等
我可能有偏见,但是DHConstraintBuilder确实看起来更小,更简洁并且更易于阅读。 它消除了两个常见错误:忘记将translatesAutoResizingMaskIntoConstraints设置为false,以及忘记将视图添加到父视图。
可能突出的一件事是使用
()|-^
^-| ()
同样,这是Visual Format对
|-
-|
不用说,但是此API面向swift3。它必须是swift,才能利用重载的运算符。
DHConstraintBuilder在GitHub上可用,并且为ios 8及更高版本。 这是我的第一个开源项目。 如果您对如何改善此问题有任何建议,请告诉我!
PS:如果这篇文章获得超过100个赞,我将写一篇有关DHConstraintBuilder卑微渊源的后续文章