0
我試圖使用infoView,它在信息按鈕上點擊一次即可打開。見圖片:Swift - 以編程方式爲特定視圖添加/刪除約束
我想InfoView中使其垂直按下按鈕排列。 我有一個UIbutton集合。 這裏是我的代碼:
@IBOutlet var infoButtons: [UIButton]!
@IBAction func infoButtonPressed(_ sender: UIButton) {
var alignYConstraint = NSLayoutConstraint()
switch sender.tag {
case 1:
alignYConstraint = NSLayoutConstraint(item: infoView, attribute: .centerY, relatedBy: .equal, toItem: infoButtons[0], attribute: .centerY, multiplier: 1.0, constant: 0)
NSLayoutConstraint.activate([alignYConstraint])
infoView.isHidden = false
infoView.textView.text = "Text goes here"
infoView.onClickCallback = {
self.infoView.isHidden = true
// self.infoView.removeFromSuperview()
NSLayoutConstraint.deactivate([alignYConstraint])
}
case 2:
alignYConstraint = NSLayoutConstraint(item: infoView, attribute: .centerY, relatedBy: .equal, toItem: infoButtons[1], attribute: .centerY, multiplier: 1.0, constant: 0)
NSLayoutConstraint.activate([alignYConstraint])
infoView.isHidden = false
infoView.textView.text = "Different text"
infoView.onClickCallback = {
self.infoView.isHidden = true
NSLayoutConstraint.deactivate([alignYConstraint])
}
....................
}
}
我有兩個問題:
1)如果我點擊關閉按鈕,一切完美,但如果我關閉的InfoView那麼之前在另一個信息按鈕點擊我有衝突的約束並且該視圖不會按照要求對齊。我試圖去除先前的限制......但顯然我無法取得成功。
2)我試圖關閉InfoView的,即使我的InfoView的以外的任何地方點擊,而且這裏同樣的問題:衝突的約束和視圖不會用正確的按鈕
謝謝您的幫助對齊。