2017-03-30 3 views
1

J'ai une vue de conteneur avec imageview et circleView avec la forme de cercle, sur le geste de pincement je veux mettre à l'échelle imageview pas le circleView avec la forme de cercle.Scaling uivew échelles de son numéro de sous-vue

Ci-dessous est mon code

if(gestureRecognizer.state == .began || gestureRecognizer.state == .changed) { 

     let currentScale: CGFloat = containerView.layer.value(forKeyPath: "transform.scale") as! CGFloat 

     // Constants to adjust the max/min values of zoom 
     let kMaxScale: CGFloat = 2.0 
     let kMinScale: CGFloat = 1.0 

     var newScale = 1 - (lastScale - gestureRecognizer.scale) 
     // new scale is in the range (0-1) 

     newScale = min(newScale, kMaxScale/currentScale) 
     newScale = max(newScale, kMinScale/currentScale) 
     containerView.transform = containerView.transform.scaledBy(x: newScale, y: newScale) 

     lastScale = gestureRecognizer.scale 
    } 

Sur l'échelle contenant vue imageView ainsi que Circleview est mise à l'échelle se.

Quelqu'un sait comment empêcher la sous-vue d'être mise à l'échelle?

Répondre

0

Une vue hérite du cadre de référence de sa vue d'ensemble. Si vous appliquez une transformation à une vue, elle affecte la vue et tous ses aperçus. C'est comme rétrécir un morceau de papier avec un dessin dessus. Bien sûr, le dessin se rétrécit si le papier se rétrécit.

Ne faites pas vos autres vues vues. Faites en sorte que les vues des frères et sœurs soient placées au-dessus de la vue qui rétrécit. De cette façon, ils ne seront pas affectés.

+0

Je l'ai fait son travail merci, pouvez-vous m'aider plus, après l'échelle conteneur vue je veux ajouter un cercle où jamais je touche sur la vue du conteneur en utilisant la vue du cercle. @Duncan –

+0

Modifiez votre question pour montrer le code que vous avez essayé et moi ou quelqu'un d'autre peut vous aider. –