如何在故事板上制作UIImageView可点击(快速)
我是swift的新手(以及一般的Xcode开发),我想知道如何在故事板上创建一个可点击的ImageView。 我正在尝试做的是当它点击时,它显示另一个视图控制器。
您可以为此添加tapGesture。 这是代码:
class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() // create tap gesture recognizer let tapGesture = UITapGestureRecognizer(target: self, action: "imageTapped:") // add it to the image view; imageView.addGestureRecognizer(tapGesture) // make sure imageView can be interacted with by user imageView.userInteractionEnabled = true } func imageTapped(gesture: UIGestureRecognizer) { // if the tapped view is a UIImageView then set it to imageview if let imageView = gesture.view as? UIImageView { println("Image Tapped") //Here you can initiate your new ViewController } } }
Swift 3.0
class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() // create tap gesture recognizer let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.imageTapped(gesture:))) // add it to the image view; imageView.addGestureRecognizer(tapGesture) // make sure imageView can be interacted with by user imageView.isUserInteractionEnabled = true } func imageTapped(gesture: UIGestureRecognizer) { // if the tapped view is a UIImageView then set it to imageview if (gesture.view as? UIImageView) != nil { print("Image Tapped") //Here you can initiate your new ViewController } } }
您可以更轻松地完成这项工作,并且可以通过Storyboard点击图像,而无需编码 。
- 首先,您需要将
UITapGestureRecognizer
拖到Storyboard中的UIImageView
上。 - 然后使用
@IBAction func imageClicked(_ sender: Any) {}
创建要在代码中运行的IBAction@IBAction func imageClicked(_ sender: Any) {}
- 接下来,您需要通过在
Document Outline
选择手势识别器,然后切换到Connection Inspector Tab
并将Sent Actions
– >Selector
拖到您的UIViewController
,然后选择您创建的相应操作,将UITapGestureRecognizer
连接到您class级中的IBAction
。先前。 - 最后,您必须在图像视图上设置“
User Interaction Enabled
”复选框。
完成,完全可点击的UIImageView,无需编写一行代码,除了您要调用的明显函数。 但是,嘿,如果你想要推动一个segue,那么你可以通过使用手势识别器Triggered Segues
而不是它的Sent Actions
来完成编码。
尽管Storyboard有其局限性,但无需为可点击图像编写代码。 ;)
我建议创建一个没有文本的UIButton,并将其制作成您想要的图像。 执行此操作后,您可以从图像按CTRL拖动到要切换到的视图控制器。 或者您可以在视图控制器的代码中进行IBAction手动分段。
对于swift 3.0版,请尝试下面的代码
override func viewDidLoad() { super.viewDidLoad() let tap1 = UITapGestureRecognizer(target: self, action: #selector(tapGesture1)) imageview.addGestureRecognizer(tap1) imageview.isUserInteractionEnabled = true } func tapGesture1() { print("Image Tapped") }
在故事板上设置图像视图,启用用户交互,然后使用此方法
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; if ([touch view] == yourImageView) { //add your code for image touch here } }
我通过设置用户交互enable = true
来实现这一点
以下代码在TouchesBegan中……干净简单
ImageView也在StackView中
if let touch = touches.first { if touch.view == profilePicture { print("image touched") } }