你可以这样做,但是你不应该这样做。
对于一些视图,你可以使用约束(constraints),而对于另一些视图,你可以使用自动调整尺寸(autosizing),但要小心不要在同一个视图上混合使用它们,因为这将导致问题(自动调整尺寸信息将丢失)。
iOS通过创建传达自动调整尺寸信息给约束引擎的约束来处理自动调整尺寸的视图。这种行为可以通过名为translatesAutoresizingMaskIntoConstraints property的属性启用或禁用。
你可以尝试向视图添加约束并仍然以旧有方式进行自动调整尺寸,方法是将此值设置为true
,但我建议你对每个视图都使用约束,因为它可以完成自动调整尺寸能做的一切,还可以更多。
在Xcode 8中,您可以(对单个视图内的子视图使用约束和自动调整大小的混合)来实现。请参见:
02:38 https://developer.apple.com/videos/play/wwdc2016/236/
使用Xcode 8,每个视图的translatesAutoresizingMaskIntoConstraints
属性由Interface Builder自动维护:
constraints
来满足自动调整大小 (translatesAutoresizingMaskIntoConstraints
被设置为 true
)。但是,如果您在 IB 中创建一个视图,Apple 表示:如果您在 Interface Builder 中添加视图,则系统会自动将此属性设置为 false。
translatesAutoresizingMaskIntoConstraints
被设置为 true
),直到您添加任何约束,因此 Apple 上面的文本实际上不正确。所以在单个视图中,您不能同时使用两个功能。视图(自动调整大小和约束)
在子视图中,您可以为每个子视图使用不同的方法,但这将会很混乱,我无法想象出合理的用途。view->subview(constraints)和subview(autoresizing) 这也意味着你可以使用例如view(autoresizing)->subview(constraints)。