ios - create - uiimageview set image swift
Cómo hacer un UIImageView en el guión gráfico en el que se puede hacer clic(swift) (5)
En el guión gráfico, establezca la interacción del usuario de la vista de imagen habilitada y luego obtenga este método
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
if ([touch view] == yourImageView)
{
//add your code for image touch here
}
}
Soy nuevo en el desarrollo veloz (y Xcode en general) y me preguntaba cómo hacer un ImageView en el guión gráfico en el que se pueda hacer clic. Lo que trato de hacer es hacerlo de manera que cuando se hace clic, se muestre otro controlador de vista.
Sugeriría crear un UIButton sin texto y convertirlo en la imagen que desea, en su lugar. Después de hacer eso, puede presionar CTRL-arrastre desde la imagen hasta el controlador de vista al que desea seguar. O simplemente puede hacer una IBAction en el código de su controlador de vista que segmenta manualmente.
para la versión rápida 3.0 intente el código siguiente
override func viewDidLoad() {
super.viewDidLoad()
let tap1 = UITapGestureRecognizer(target: self, action: #selector(tapGesture1))
imageview.addGestureRecognizer(tap1)
imageview.isUserInteractionEnabled = true
}
func tapGesture1() {
print("Image Tapped")
}
Puedes agregar tapGesture para eso. Aquí está el código:
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
}
}
}
Puedes hacerlo aún más fácil y hacer que una imagen se pueda hacer clic en Storyboard sin codificación .
- Primero, debe arrastrar un
UITapGestureRecognizer
a suUIImageView
en Storyboard. - Luego, crea el IBAction que desea ejecutar en su código con
@IBAction func imageClicked(_ sender: Any) {}
- A continuación, debe conectar el
UITapGestureRecognizer
alIBAction
en su clase seleccionando el reconocedor de gestos en elDocument Outline
delDocument Outline
, luego cambiando a laConnection Inspector Tab
y arrastrando lasSent Actions
->Selector
a suUIViewController
donde luego seleccione la acción apropiada que creó previamente. - Finalmente, debe establecer la casilla
User Interaction Enabled
en la vista de la imagen.
Hecho, un UIImageView completamente seleccionable sin escribir una sola línea de código excepto la función obvia que desea invocar. Pero bueno, si por ejemplo quieres presionar un segue, puedes ir sin codificación usando los reconocedores de gestos Triggered Segues
lugar de sus Sent Actions
.
Aunque Storyboard tiene sus limitaciones, no es necesario escribir código para imágenes clicables. ;)