Poate fi atasat un UIGestureRecognizer la mai multe view-uri?

Cei de la Apple spun ca nu: un UIGestureRecognizer poate fi utilizat doar cu un singur view.
Cum trecem peste acest impediment, avand o lista de view-uri, fiecare din aceste view-uri facand aceeasi actiune, sa zicem tiparirea campului tag?

1. generam o functie care va returna un UIGestureRecognizer

func setGestureRecognizer() -> UITapGestureRecognizer {
var gesture = UITapGestureRecognizer()
gesture = UITapGestureRecognizer(target: self, action: #selector(changeImage(sender:)))
return gesture
}

2. definim functia de raspuns in care extragem view-ul senderul UIImageView
func changeImage(sender: UITapGestureRecognizer) {
let tappedImageView = sender.view! as? UIImageView
print("button clicked - \(tappedImageView!.tag)")
}

3. folosim recognizer-ul in view-urile noastre
view1.addGestureRecognizer(setGestureRecognizer())
view2.addGestureRecognizer(setGestureRecognizer())
view3.addGestureRecognizer(setGestureRecognizer())

Share Button

CGGeometry – SWIFT 3

Mai intai cateva detalii despre componentele CGGeometry:

1. CGPoint – structura ce reprezinta un punct in sistem cartezian.
2. CGRect – structura ce reprezinta un dreptunghi prin locatie si dimensiuni.
3. CGSize – structura ce reprezinta dimensiunile latimii si inaltimii.

Nici una dintre cele trei structuri nu precizeaza tipul unitatii de masura folosita. Cele mai uzuale sunt point-ul si pixel-ul.

Cum folosim elemente CGGeometry in Swift 3:

let frame = CGRect(x: 0, y: 0, width: 20, height: 20)

let point = CGPoint(x: 0, y: 0)

let size = CGSize(width: 20, height: 20)

Combinand toate cele trei putem scoate o frumoasa sintaxa in SWIFT 3:

let rect = CGRect(origin: CGPoint(x: 0,y :0), size: CGSize(width: 100, height: 100))

In acest ultim exemplu “complex” am folosit un al doilea tip de constructor pentru CGRect.

Share Button