簡體   English   中英

分段控件,以編程方式更改UIImageView Swift 4/5

[英]Segmented Control, changing a UIImageView (Programmatically) Swift 4/5

我已將代碼包括到我的分段控件和UIImageView中。 任何幫助將是巨大的,謝謝。

let segmentedControl: UISegmentedControl = {
        let sc = UISegmentedControl(items: ["Login", "Register"])
        sc.translatesAutoresizingMaskIntoConstraints = false
        sc.tintColor = UIColor.white
        sc.selectedSegmentIndex = 0

        sc.addTarget(self, action: #selector(handleSegmentedControlChange), for: .valueChanged)
        return sc
    }()
// profile pic
    lazy var picture: UIImageView = {
        var pic = UIImageView()
        if segmentedControl.selectedSegmentIndex == 0 {
            pic.image = UIImage(named: "Logo")
        } else {
            pic.image = UIImage(named: "Profile")

            let mytapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleSelectProfileImageView))
            mytapGestureRecognizer.numberOfTapsRequired = 1
            pic.addGestureRecognizer(mytapGestureRecognizer)
            pic.isUserInteractionEnabled = true
        }
        pic.translatesAutoresizingMaskIntoConstraints = false
        pic.contentMode = .scaleAspectFill
        return pic
    }()

圖片應該改變並啟用觸摸手勢,但是它們都不起作用。

將If-else塊移動到handleSegmentedControlChange選擇器。

1)創建一個@objc func ,將其作為參數接收(_ sender: UISegmentedControl) ,例如:

@objc func segmentedControlChanged(_ sender: UISegmentedControl)

2)創建UISegmentedControl后,使用addTarget,如下所示:

segmentedControl.addTarget(self, action: #selector(segmentedControlChanged(_:)), for: .valueChanged)

3)在您創建的功能中,實現相應的邏輯:

  @objc func segmentedControlChanged(_ sender: UISegmentedControl) {
         if sender.selectedSegmentIndex == 0 {
            pic.image = UIImage(named: "Logo") 
            // Also, if you want to resize your image view after set the new image, call sizeToFit() func here. 
         } else {
            pic.image = UIImage(named: "Profile")
            // And here. 
  }
}

暫無
暫無

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

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