swift - 带有贴纸的 UIImageView 并在贴纸上添加手势

标签 swift uiimageview gesture

我有一个 ImageView 和上面的贴纸,现在我想在那个贴纸上添加手势,一切正常,但是,我的贴纸从 UIImageView 的图层中出来,如图所示。我只想在 ImageView 的边界内使用贴纸手势。

enter image description here

以下是我的代码:

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(_ recognizer: 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
    }

}

最佳答案

尝试将 self.view.addSubview(imgSticker) 中的 self.view 替换为正在编辑的图像的 ImageView,即您将贴纸贴在上面的图像。希望能帮助到你。

所以,它应该是这样的 - imageView.addSubview(stickerOnImg)。我以前遇到过同样的问题,这对我有用。

关于swift - 带有贴纸的 UIImageView 并在贴纸上添加手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46149840/

相关文章:

ios - Swift:在滑动手势上移动 UIView

ios - 每天在服务器上保存数据

iOS 在 ImageView 中交叉淡入淡出多个图像

ios - 如何使用手势

ios - ARKit 平面,上面有现实世界的物体

swift - 当呈现给具有 webview 的 View Controller 时,警报不显示

swift - 裁剪图像,使其像 Snapchat 一样全屏显示

ios - UIScrollView 保持不变

ios - 在 UIView 上上下滑动工作但 ScrollView 阻碍它快速?

android - 在后台监听触摸事件