Ios 皮普相机效果
如何在iOS Swift应用程序中实现PIP效果。我试过了,但结果不准确的情况下,放置和移动的内部图片。 以下是我的尝试: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
@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或共享一些代码以提供帮助。