有没有更简单的方法以编程方式查看UIImageView?

时间:2018-11-05 19:01:10

标签: swift function uiimageview uiimage programmatically

我有8个按钮,每按一次我想显示一张图片。

我想知道的是,我是否需要8个功能来显示这些图像? 还是有更简单的方法?

这是我的操作方式,它可以正常工作,但是我不想一遍又一遍地重复同样的事情吗?

var imageView1:UIImageView!
var imageView2:UIImageView!
var imageView3:UIImageView!

    override func viewDidLoad() {
    super.viewDidLoad()
    showImage1()
    showImage2()
    showImage3()
    tapGestureRecognizerFunc()

  }

 @objc func button1Tap() {
    if self.imageView1.isHidden {
       self.imageView1.isHidden = false            
    }else{
       self.imageView1.isHidden = true
    }
}
@objc func button2Tap() {
    if self.imageView2.isHidden {
       self.imageView2.isHidden = false            
    }else{
       self.imageView2.isHidden = true
    }

}
@objc func button3Tap() {
    if self.imageView3.isHidden {
       self.imageView3.isHidden = false            
    }else{
       self.imageView3.isHidden = true
    }

}
func showImage1() {
    imageView1 = UIImageView(frame: CGRect(x: 271, y: 8, width: 29, height: 29))
    imageView1.image = UIImage(named: "Done.png")
    imageView1.contentMode = .scaleAspectFit
    View1.addSubview(imageView1)
    imageView1.isHidden = true
}
func showImage2() {
    imageView2 = UIImageView(frame: CGRect(x: 271, y: 8, width: 29, height: 29))
    imageView2.image = UIImage(named: "Done.png")
    imageView2.contentMode = .scaleAspectFit
    View2.addSubview(imageView2)
    imageView2.isHidden = true
}
func showImage3() {
    imageView2 = UIImageView(frame: CGRect(x: 271, y: 8, width: 29, height: 29))
    imageView2.image = UIImage(named: "Done.png")
    imageView2.contentMode = .scaleAspectFit
    View3.addSubview(imageView2)
    imageView2.isHidden = true
}
func tapGestureRecognizerFunc () {        
    let exercise1Tap = UITapGestureRecognizer(target: self, action: #selector(button1Tap))
    exercise1Tap.numberOfTapsRequired = 2
    View1.addGestureRecognizer(exercise1Tap)

    let exercise2Tap = UITapGestureRecognizer(target: self, action: #selector(button2Tap))
    exercise2Tap.numberOfTapsRequired = 2
    View2.addGestureRecognizer(exercise2Tap)

    let exercise3Tap = UITapGestureRecognizer(target: self, action: #selector(button3Tap))
    exercise3Tap.numberOfTapsRequired = 2
    View3.addGestureRecognizer(exercise3Tap)

}

是的我是新手

1 个答案:

答案 0 :(得分:1)

由于我不知道,在何处以及如何创建按钮,很难回答。 以下只是一个提示。

  1. 您应该使用UIImageView数组
  2. 您的回调应该使用Form buttonAction(sender:UIButton)
  3. 您可以在按钮上使用标签来获取相应按钮的编号

例如:

ViewController类:UIViewController {

var imageviews : [UIImageView] = []
override func viewDidLoad() {
    super.viewDidLoad()

    for i in 1...8 {
        let imageview = UIImageView()
        view.addSubview(imageview)
        imageview.tag = i
        imageviews.append(imageview)
        let button = UIButton(frame: CGRect(x: 0, y: CGFloat(i)*50.0, width: 100, height: 30))
        view.addSubview(button)
        button.setTitle("Button \(i)", for: .normal)
        button.setTitleColor(.black, for: .normal)
        button.tag = i
        button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
    }
}

@objc func buttonAction(sender : UIButton) {
    let index = sender.tag
    print("Button \(index) pressed")

    imageviews[index].isHidden = !imageviews[index].isHidden
}

}