我想知道,现在使用自动布局,您必须告诉每个UIView
您不想将其(已弃用的)自动调整大小的蒙版转换为布局约束,如下所示:
let view = MyView()
view.setTranslatesAutoresizingMaskIntoConstraints(false)
在我的应用程序中,我(几乎)使用自定义约束执行所有视图,因此我从不想要自动调整自动调整大小的蒙版。如果默认设置为false
,那会不会很好?因此,只有在我想要翻译自动调整大小掩码的情况下,我才将其设置为true
?
有没有办法让false
成为setTranslatesAutoresizingMaskIntoConstraints
的默认值?也许有某种聪明的扩展(a.k.a.类别)?
答案 0 :(得分:3)
我完全同意这就是为什么我制作this category包含这样一个初始化者的原因:
extension UIView {
// MARK: Initializing a View Object
/**
* @name Initializing a View Object
*/
/**
* Returns a frameless view that does not automatically use autoresizing (for use in autolayouts).
*
* @return A frameless view that does not automatically use autoresizing (for use in autolayouts).
*/
class func autoLayoutView() -> Self {
let view = self()
view.setTranslatesAutoresizingMaskIntoConstraints(false)
return view
}
}
项目中也有一个快速的分支,但这是非常早期的阶段。拉请求欢迎!
答案 1 :(得分:1)
为什么UIView上没有类别?
头:
@interface UIView( MaskKiller )
- ( instancetype )myInit;
实施:
@implementation UIView( MaskKiller )
- ( instancetype )myInit
{
if( self = [ self init ] )
{
self.translatesAutoresizingMaskIntoConstraints = NO;
}
return self;
}
编辑:这里有点快,当然在处理UIView子类时没有解决任何问题。在这种情况下,调整可能是一种选择。