2014-11-20 90 views
11

在试图解决与编程方式添加到一个滚动视图的子视图的自动布局的问题,我已经运行到整个互联网many参考的是,在各种情况下说来设置translatesAutoresizingMaskIntoConstraints = YEStranslatesAutoresizingMaskIntoConstraints = NO,视情况而定。无法设置translatesAutoresizingMaskIntoConstraints

然而,斯威夫特,当我输入:

var view = UIView() 
view.translatesAutoresizingMaskIntoConstraints = false 

我得到的行错误:Cannot assign to 'translatesAutoresizingMaskIntoConstraints' in 'view'。为什么?因为在检查时,你会发现它是一个无参数函数,而不是一个属性。

我已经通过继承解决此得到,但它是一个重大的不便,必须继承我负责的每一个观点,只是设置translatesAutoresizingMaskIntoConstraints

class CardView: UIView { 
    override func translatesAutoresizingMaskIntoConstraints() -> Bool { 
     return false 
    } 
} 

有谁知道解决的办法,或者可以揭示一般互联网委员会在Swift中告诉你的内容与你实际可以做什么之间的差异?

+1

雨燕2.0允许你设置'直接translatesAutoresizingMaskIntoConstraints'。这个问题的答案仍然适用于Swift 2.0之前。 – 2015-09-30 17:39:19

回答

20

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

语法的作品,因为ObjC,您可以使用点符号调用方法,以及(有关于如何实际性能自动生成getter/setter方法完全是另外一个讨论)。

使用方法,而不是试图使用属性符号从ObjC

view.setTranslatesAutoresizingMaskIntoConstraints(false) 
+0

有趣的事实:在一个NSView,这句法不工作,你需要使用view.translatesAutoresizingMaskIntoConstraints =假代替。这可能是雷达值得的。 – 2015-12-22 16:31:51

3

使用view.setTranslatesAutoresizingMaskIntoConstraints(false)代替。

3

斯威夫特2

view.translatesAutoresizingMaskIntoConstraints = false