2016-07-15 12 views
0
import UIKit 
import SnapKit 

class RecordButton: UIView { 
    let box = UIView() 
    let container = UIView() 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     setup() 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     setup() 
    } 

    func setup() { 
     container.snp_makeConstraints { (make) -> Void in 
     make.width.equalTo(200) 
     make.height.equalTo(200) 
     make.center.equalTo(self.container) 
     } 
    box.snp_makeConstraints { (make) -> Void in 
     make.top.equalTo(container).offset(50) 
     make.left.equalTo(container).offset(50) 
     make.bottom.equalTo(container).offset(-50) 
     make.right.equalTo(container).offset(-50) 
     make.center.equalTo(container) 
    } 
    self.addSubview(container) 
    container.addSubview(box) 
    setColor() 

    } 
    func setColor() { 
     self.container.backgroundColor = UIColor.blackColor() 
     self.box.backgroundColor = UIColor.orangeColor() 
    } 

} 

爲什麼會顯示此錯誤?有沒有其他方法可以執行此操作?任何建議? centre.equalTo創建此錯誤。我是新來的迅速,並試圖實現SnapKit框架'無法安裝約束',原因:'視圖之間沒有共同的超級視圖

+0

嘗試加入意見 – pbodsk

回答

2

這意味着你的意見或任何控制器應該是共同的看法。 例如,有一個視圖A有兩個按鈕說X和Y,而視圖B有兩個按鈕P和K,則可以將P和K的約束設置爲它的超級視圖B,而不是相對於視圖A.

如果有多個超級視圖,那麼確保你已經對每個超級視圖給予適當的限制。那麼只有端點視圖的約束條件得到滿足。

Uodate:在容器

先加箱和集裝箱在它的上海華再設置限制。並確保你分別在self.containercontainer的中心位置分別爲container viewbox view。如果你正在設置top,bottom,leading and trailing那麼也不需要設置中心!

希望這將幫助你在其上安裝的約束之前(移動`sip_makeConstraints`塊你添加的意見後):)

+0

我知道我是愚蠢的,但你能解釋一下那關於我的代碼?那太好了。 –

+0

檢查答案中的更新,如果它可以幫助:) – Lion

+0

Got it!非常感謝:) –

相關問題