是否可以将autoresizing mask与autolayout混合使用?

时间:2017-03-08 01:47:28

标签: ios autolayout constraints autoresizingmask adaptive-layout

我相信在使用Autolayout管理UI时,使用自动调整功能可以很好地进行定向更改。

许多程序员同时推荐两者兼顾,但据我所知,它应该没问题。

因为Autoresizingmask易于使用。

我认为autoresizing mask本身会变成约束,我相信

translatesAutoresizingMaskIntoConstraints

纠正我如果我错了

如果好或不好可以解释一下为什么?

1 个答案:

答案 0 :(得分:5)

据我所知,同时使用autolayout和autoresizingmasks是绝对可以的。您不想做的是将自动布局约束添加到您正在使用自动调整遮罩来管理布局的视图。自动调整掩码的一般用例是为视图添加视图,并希望将其固定为顶部,底部,前导和尾部。在这种情况下,它只是

let pinnedToSuper = UIView(frame: self.view.bounds)
//all views default to .translatesAutoresizingMaskIntoConstraints if added programmatically
pinnedToSuper.autoresizingMask = [.flexibleWidth,.flexibleHeight]
self.view.addSubview(pinnedToSuper)

请注意,与添加每个约束相比,这更容易。

在autolayout自动调整掩码之前,所有iOS都必须帮助进行布局。自动调整面罩也被称为弹簧和支柱。如果您希望视图保持完美的正方形(或制作圆形)以保持纵横比并且还在所有方向上调整视图大小,则自动调整遮罩分解的示例用例。在这种情况下,您必须在layoutSubviews中添加代码以根据父边界手动调整视图大小。您可以看到,这可能会变得乏味,特别是如果您正在避开由autolayout单独处理的视图。这可能是为什么在使用两者时要小心的原因。我倾向于在简单的情况下使用它,例如添加一个坚持超视图边界的视图。

一起使用时的重要区别。

您应该避免尝试将autolayout约束添加到您正在使用自动调整遮罩的视图,以尝试混合它们并实现布局,因为您可能会遇到冲突的约束而没有实际效果。但是,您可以将autolayout约束添加到具有由自动调整掩码管理的子视图的视图中,并且不应存在任何问题。这是我的典型用例。我希望这可以帮助你如何使用它。