2015-10-24 108 views
1

我想將1個視圖添加到CallOutViewpushButton應該在底部,靜態高度爲20.然後topView應該填充其餘部分。我試圖用編程方式使用SnapKit來做到這一點。但是,似乎按鈕只是填滿了一切?我究竟做錯了什麼?使用編程方式在視圖中創建2個視圖

 callOutView = UIView(frame: CGRectMake(-70+(self.frame.width/2), -65, 140, 60)) 
     callOutView!.backgroundColor = UIColor.clearColor() 
     callOutView?.clipsToBounds = true 
     callOutView?.layer.cornerRadius = 6 
     self.addSubview(callOutView!) 

     let topView = UIView() 
     topView.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.8) 
     callOutView?.addSubview(topView) 


     let pushButton = UIButton() 
     pushButton.backgroundColor = UIColor(rgba: "#09316e").colorWithAlphaComponent(0.8) 
     pushButton.setTitle("Se Mere", forState: UIControlState.Normal) 
     pushButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal) 
     pushButton.titleLabel?.font = UIFont.systemFontOfSize(8) 
     callOutView?.addSubview(pushButton) 

     topView.snp_makeConstraints { (make) -> Void in 
      make.top.equalTo(callOutView!).offset(0) 
      make.left.equalTo(callOutView!).offset(0) 
      make.bottom.equalTo(pushButton).offset(0) 
      make.right.equalTo(callOutView!).offset(0) 
      make.height.equalTo(40) 

     } 

     pushButton.snp_makeConstraints { (make) -> Void in 
      make.height.equalTo(20) 
      make.top.equalTo(topView).offset(0) 
      make.left.equalTo(callOutView!).offset(0) 
      make.bottom.equalTo(0).offset(0) 
      make.right.equalTo(callOutView!).offset(0) 

     } 

回答

0

問題是存在一些彼此衝突的約束,這會使自動佈局系統破壞其中的一些。

topView.snp_makeConstraints { (make) -> Void in 
    ... 
    make.bottom.equalTo(pushButton).offset(0) 
    ... 
} 


pushButton.snp_makeConstraints { (make) -> Void in 
    ... 
    make.top.equalTo(topView).offset(0) 
    ... 
} 

上述告知自動佈局系統的兩個約束:

  1. 地點topViewpushButton與頂部邊緣對齊。
  2. 地方topViewpushButton底部邊緣對齊。

如果你給topViewpushButton不同的高度,這是不可能的。

另外,這不是你想要的。你想要的是「的地方pushButton正確的topView「。

下面是修改後的代碼,以使pushButton放在右下面的topView

topView.snp_makeConstraints { (make) -> Void in 
    ... 
    make.bottom.equalTo(pushButton.snp_top).offset(0) 
    ... 
} 


pushButton.snp_makeConstraints { (make) -> Void in 
    ... 
    make.top.equalTo(topView.snp_bottom).offset(0) 
    ... 
} 
相關問題