2014-11-20 94 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