2017-09-11 5 views
1

ImageViewとステッカーが1つあります。このステッカーにジェスチャーを追加したいと思います。すべて正常に機能していますが、画像はUIImageViewのレイヤーから外に出ています。私はImageViewの境界内でのみステッカーのジェスチャーをしたい。以下のようにUIImageViewでステッカーを貼り付けて、ステッカーにジェスチャーを追加する

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) 
} 

私はこの関数を呼び出していますし、私のハンドル方法:

   addStickers(image: #imageLiteral(resourceName: "Sticker1.png")) 

FUNCのhandlePanGesture(_認識機能:UIPanGestureRecognizer){

enter image description here

は私のコードです
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 
    } 

} 
+0

私は現在、同じ問題に取り組んでいます。これまでに費やされた時間はそれほどありませんでしたが、潜在的に役立つリンクがあります。トリックは、あなたが残したい範囲にコードを書き込む*コードを書くことです。 https://stackoverflow.com/questions/16460229/why-a-subview-wont-stay-in-the-parent-frame#16460566(これはサンプルコードのようです - そう、複数形 - もこのように動作します) – dfd

答えて

1

self.viewself.view.addSubview(imgSticker)に置き換えて、編集中の画像のImageViewに貼り付けてください。画像にはステッカーを貼り付けた画像が表示されます。それが役に立てば幸い。

だから、このようにする必要があります - imageView.addSubview(stickerOnImg)。私は前に同じ問題を抱えていて、これは私のために働いた。

関連する問題