无法设置translatesAutoresizingMaskIntoConstraints

Alb*_*ori 13 ios autolayout swift

为了解决与以编程方式将子视图添加到滚动视图相关的自动布局问题,我在整个互联网上遇到了许多引用,在各种情况下说要设置translatesAutoresizingMaskIntoConstraints = YEStranslatesAutoresizingMaskIntoConstraints = NO根据具体情况.

但是,在Swift中,当我键入:

var view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
Run Code Online (Sandbox Code Playgroud)

我得到了内联错误:Cannot assign to 'translatesAutoresizingMaskIntoConstraints' in 'view'.为什么?因为,在检查时,您会发现它是无参数函数,而不是属性.

我已经通过子类化解决了这个问题,但是为了处理我正在处理的每个视图都是一个很大的不便,只是为了设置translatesAutoresizingMaskIntoConstraints:

class CardView: UIView {
    override func translatesAutoresizingMaskIntoConstraints() -> Bool {
        return false
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有人知道解决这个问题的方法,或者能否解释一般互联网理事会告诉你的内容与你在Swift中实际可以做的事情之间的差异?

小智 21

translatesAutoresizingMaskIntoConstraints实际上是UIView上的一个方法,而不是一个属性.

语法有效,因为ObjC允许您使用点符号来调用方法(还有关于属性如何实际自动生成getter/setter方法的其他讨论).

使用该方法而不是尝试使用ObjC中的属性表示法

view.setTranslatesAutoresizingMaskIntoConstraints(false) 
Run Code Online (Sandbox Code Playgroud)