2016-07-15 5 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

試みを助ける

希望(あなたはビューを追加した後に 'sip_makeConstraints'ブロックを移動) – pbodsk

答えて

2

これはあなたのビューまたは任意のコントローラが共通のビューでなければならないことを意味します。 たとえば、ビューAにはXとYの2つのボタンがあり、ビューBには2つのボタンPとKがあり、ビューAではスーパービューBには適用されません。

複数のスーパービューがある場合は、すべてのスーパービューに適切な制約が設定されていることを確認してください。エンドポイント・ビューの制約のみが満たされます。

Uodate:

まずそれにコンテナとコンテナ内のボックスを追加し、制約を設定し、その後スーパーです。 container viewbox viewについては、それぞれself.containercontainerの中心になっていることを確認してください。 top,bottom,leading and trailingを設定している場合は、センターも設定する必要はありません!これはあなたがそれらの制約をインストールする前にビューを追加:)

+0

私は愚かなことしています知っていますが、説明することができますそれは私のコードに関してですか?それは素晴らしいだろう。 –

+0

回答があれば更新を確認してください:) – Lion

+0

これが完成しました!おかげでたくさん:) –

関連する問題