如何在Swift中为UIImageView对象分配一个动作
我试图分配一个UIImageView
的行动,当用户点击它。
我知道如何创build一个UIButton
的行动,但我怎么能模仿UIButton
的相同的行为,但使用UIImageView
?
你需要一个UITapGestureRecognizer
。 设置使用这个:
override func viewDidLoad() { super.viewDidLoad() let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:))) imageView.isUserInteractionEnabled = true imageView.addGestureRecognizer(tapGestureRecognizer) } func imageTapped(tapGestureRecognizer: UITapGestureRecognizer) { let tappedImage = tapGestureRecognizer.view as! UIImageView // Your action }
(你也可以使用一个UIButton并为其分配一个图像,而不需要文本,而只需连接一个IBAction)
你需要添加一个手势识别器(点击使用UITapGestureRecognizer ,点击并按住使用UILongPressGestureRecognizer )到您的UIImageView
。
let tap = UITapGestureRecognizer(target: self, action: #selector(YourClass.tappedMe)) imageView.addGestureRecognizer(tap) imageView.isUserInteractionEnabled = true
并执行select器方法,如:
func tappedMe() { println("Tapped on Image") }
你可以添加一个UITapGestureRecognizer
到UITapGestureRecognizer
,只需拖动一个到你的Storyboard / xib,按住Ctrl键从imageView拖动到gestureRecognizer,然后按住Ctrl键从gestureRecognizer拖动到Swift文件来创build一个IBAction
。
您还需要在UIImageView
上启用用户交互,如下图所示:
对于迅速2.0和以上做到这一点
@IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.tappedMe)) imageView.addGestureRecognizer(tap) imageView.userInteractionEnabled = true } func tappedMe() { print("Tapped on Image") }
你实际上可以将UIButton
的图像设置为通常放在UIImageView
。 例如,你会在哪里做:
myImageView.image = myUIImage
你可以改为使用:
myButton.setImage(myUIImage, forState: UIControlState.Normal)
所以,这是你的代码可能是这样的:
override func viewDidLoad(){ super.viewDidLoad() var myUIImage: UIImage //set the UIImage here myButton.setImage(myUIImage, forState: UIControlState.Normal) } @IBOutlet var myButton: UIButton! @IBAction func buttonTap(sender: UIButton!){ //handle the image tap }
使用这种方法的好处是,如果您必须从数据库加载图像,则可以在设置图像之前设置button的标题:
myButton.setTitle("Loading Image...", forState: UIControlState.Normal)
告诉您的用户您正在加载图像
你可以把UIButton
放在UIImageView
顶部,并且在加载图像之前听一下button