簡體   English   中英

如何在Swift 2的垂直對齊的UIButton中添加約束?

[英]How to add constrains in vertically aligned UIButtons in swift 2?

我在viewController中有三個垂直對齊的UIButton A,B,C。 我想以編程方式在按鈕C中添加約束,以便如果我隱藏/刪除按鈕B,則C應該位於B的位置,如果按鈕B出現,則C應該在B旁邊。我如何以編程方式添加約束。


注意:此版本不使用以編程方式應用的約束,但可以達到預期的效果!


我的Main.storyboard File如下所示:

主板


說明:我有3個按鈕插座和1個按鈕動作。 當您按下隱藏按鈕B時Button C消失,但是Button B收到標題Button C及其動作,並且隱藏按鈕B變為顯示按鈕B。 按鈕的動作是Apressed()Bpressed()Cpressed() 您可以在其中添加自己的代碼,我僅以backgroundColor()為例。


import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var buttonA: UIButton!
    @IBOutlet weak var buttonB: UIButton!
    @IBOutlet weak var buttonC: UIButton!
    var i = 0

    override func viewDidLoad() {
        super.viewDidLoad()
        buttonA.addTarget(self, action: #selector(ViewController.Apressed), for: UIControlEvents.touchUpInside)
        buttonB.addTarget(self, action: #selector(ViewController.Bpressed), for: UIControlEvents.touchUpInside)
        buttonC.addTarget(self, action: #selector(ViewController.Cpressed), for: UIControlEvents.touchUpInside)
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    @IBAction func hideB(_ sender: AnyObject) {
        if i == 0{
        buttonC.isHidden = true
        buttonB.setTitle("Button C", for: .normal)
        buttonB.removeTarget(self, action: #selector(ViewController.Bpressed), for: .touchUpInside)
        buttonB.addTarget(self, action: #selector(ViewController.Cpressed), for: .touchUpInside)
        i += 1
        sender.setTitle("Show Button B", for: .normal)
        }
        else if i == 1{
            buttonC.isHidden = false
            buttonB.removeTarget(self, action: #selector(ViewController.Cpressed), for: .touchUpInside)
            buttonB.addTarget(self, action: #selector(ViewController.Bpressed), for: UIControlEvents.touchUpInside)
            buttonB.setTitle("Button B", for: .normal)
            i = 0
            sender.setTitle("Hide Button B", for: .normal)

        }

    }
    func Apressed(){
        self.view.backgroundColor = UIColor.red()
    }
    func Bpressed(){
        self.view.backgroundColor = UIColor.green()
    }
    func Cpressed(){
        self.view.backgroundColor = UIColor.yellow()
    }



}

最終結果:

模擬器最終結果


我確實建議您先通過3個按鈕的情節提要(如果可能)設置所有約束,然后再通過約束也設置一個固定的高度。

比您可以創建一個@IBOutlet weak var bHeight: NSLayoutConstrait! 並將其附加到情節提要中的UIButton B Height (您也可以從此處直接從情節提要中查看如何執行此操作 )。

然后,如果您強制bHeight.constant = 0 ,則應該能夠實現您的目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM