![](/img/trans.png)
[英]Changing content of UICollectionView with segmented Control in the header in Swift
[英]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.