J'ai un ImageView et un autocollant dessus maintenant je veux ajouter Gesture sur cet autocollant, Tout fonctionne correctement mais, mon autocollant sort de la couche de UIImageView comme indiqué dans l'image. Je veux seulement un geste d'autocollant dans les limites d'ImageView.UIImageView avec autocollant et ajout de mouvement sur l'autocollant
Après mon code:
func addStickers(image: UIImage) {
gesture = "Stickers"
imgSticker = UIImageView(frame: CGRect.init(x: 0.0, y: 0.0, width: 80, height: 80))
imgSticker.center = view.center
imgSticker.image = image
imgSticker.contentMode = UIViewContentMode.scaleAspectFill
imgSticker.isUserInteractionEnabled = true
self.view.addSubview(imgSticker)
//imgImage.addSubview(imgSticker)
panGesture = UIPanGestureRecognizer.init(target: self, action: #selector(handlePanGesture(_:)))
panGesture.delegate = self
pinchGesture = UIPinchGestureRecognizer.init(target: self, action: #selector(handlePinchGesture(_:)))
pinchGesture.delegate = self
rotateGesture = UIRotationGestureRecognizer.init(target: self, action: #selector(handleRotateGesture(_:)))
rotateGesture.delegate = self
imgSticker.addGestureRecognizer(panGesture)
imgSticker.addGestureRecognizer(pinchGesture)
imgSticker.addGestureRecognizer(rotateGesture)
}
J'appelle cette fonction et mes méthodes de poignée comme ci-dessous:
addStickers(image: #imageLiteral(resourceName: "Sticker1.png"))
func handlePanGesture (_ reconnaisseur: UIPanGestureRecognizer) {
if gesture == "Stickers" {
let recognizerCenter = recognizer.location(in: self .view)
imgSticker.center = recognizerCenter
} else {
let recognizerCenter = recognizer.location(in: self.view)
txtLabel.center = recognizerCenter
}
}
func handlePinchGesture(_ recognizer: UIPinchGestureRecognizer) {
if gesture == "Stickers" {
imgSticker.transform = imgSticker.transform.scaledBy(x: recognizer.scale, y: recognizer.scale)
recognizer.scale = 1.0
} else {
txtLabel.transform = txtLabel.transform.scaledBy(x: recognizer.scale, y: recognizer.scale)
recognizer.scale = 1.0
}
}
func handleRotateGesture(_ recognizer: UIRotationGestureRecognizer) {
if gesture == "Stickers" {
imgSticker.transform = imgSticker.transform.rotated(by: recognizer.rotation)
recognizer.rotation = 0.0
} else {
txtLabel.transform = txtLabel.transform.rotated(by: recognizer.rotation)
recognizer.rotation = 0.0
}
}
J'aborde actuellement le même problème. Pas beaucoup de temps passé jusqu'ici, mais voici un lien potentiellement utile - l'astuce consiste à * écrire * le code pour le garder dans les limites que vous voulez qu'il reste. https://stackoverflow.com/questions/16460229/why-a-subview-wont-stay-in-the-parent-frame#16460566 (Il semble que les exemples de codes - oui, pluriel - se comportent tous comme ça aussi.) – dfd