Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 皮普相机效果_Ios_Swift_Image Processing - Fatal编程技术网

Ios 皮普相机效果

Ios 皮普相机效果,ios,swift,image-processing,Ios,Swift,Image Processing,如何在iOS Swift应用程序中实现PIP效果。我试过了,但结果不准确的情况下,放置和移动的内部图片。 以下是我的尝试: @IBOutlet var galleryImageView: UIImageView! @IBOutlet var background: UIImageView! @IBOutlet var behindView: UIView! override func viewDidLoad() { super.viewDidLoa

如何在iOS Swift应用程序中实现PIP效果。我试过了,但结果不准确的情况下,放置和移动的内部图片。 以下是我的尝试:

    @IBOutlet var galleryImageView: UIImageView!
    @IBOutlet var background: UIImageView!
    @IBOutlet var behindView: UIView!
    override func viewDidLoad() {
        super.viewDidLoad()
        let image = UIImage(named: "ph3")
        let maskingImage = UIImage(named: "mask")
        galleryImageView.image = maskImage(image: image!, mask: maskingImage!)
        galleryImageView.contentMode = .scaleAspectFill
        background.image = UIImage(named: "ph3")?.stackBlur(10)
        let maskingLayer = CALayer()
        maskingLayer.frame = behindView.bounds
        maskingLayer.contents = (galleryImageView.image?.cgImage! as Any)
        behindView.layer.mask = maskingLayer
        let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.panGestureDetected))
        panGestureRecognizer.delegate = self
        self.galleryImageView.addGestureRecognizer(panGestureRecognizer)
    }
    func maskImage(image:UIImage, mask:(UIImage))->UIImage{
        let imageReference = image.cgImage
        let maskReference = mask.cgImage
        let imageMask = CGImage(maskWidth: maskReference!.width,
                                height: maskReference!.height,
                                bitsPerComponent: maskReference!.bitsPerComponent,
                                bitsPerPixel: maskReference!.bitsPerPixel,
                                bytesPerRow: maskReference!.bytesPerRow,
                                provider: maskReference!.dataProvider!, decode: nil, shouldInterpolate: true)
        let maskedReference = imageReference!.masking(imageMask!)
        let maskedImage = UIImage(cgImage:maskedReference!)
        return maskedImage
    }
galleryImageView是内部图像视图

结果应该是:


你解决了吗?是的,我终于解决了:)请给我建议。对于Pip效果,我们必须在photoshop中设计Pip形状的遮罩。。。然后将该遮罩应用于uiview。。这样uiview就可以根据蒙版修改它的rect,,,然后在蒙版视图中创建uiimageview,并将pip形状指定给uiimageview。嗨…我在实现pip效果方面遇到了很多困难。几乎,我已经实现了所有功能,但当我尝试添加一些自定义帧并动态给出_behindView帧时,它不工作…它可能离pip帧太远,或者由于帧错误而变得太宽或太大。请建议如何将帧提供给behindview或共享一些代码以提供帮助。