Я делаю снимок с камеры в моем приложении.У меня есть слой поверх моего изображения с прозрачным отверстием, как показано на рисунке
Что я хочу сделать, это обрезать изображение в этом круглом отверстии.Я использую этот код, но он не работает
UIGraphicsBeginImageContextWithOptions(CGSize(width: radius-60, height: radius-60),false,0)
final!.draw(at: CGPoint(x: 30, y: screenHeight/2 - radius/2 + 30)
let tmpImg = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
, где высота и ширина в UIGraphicsBeginImageContextWithOptions - это высота и ширина круглого отверстия, а x и y на чертеже - координата x отверстия, а yкоордината - верхняя граница отверстия
код для изображения
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
print("here123")
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
imageView.contentMode = .scaleAspectFit
imageView.image = image
self.view.backgroundColor = UIColor.black
picker.dismiss(animated: true, completion: nil)
photoSave()
}
код для прозрачного отверстия
screenWidth = self.view.frame.width
screenHeight = self.view.frame.height
radius = min(screenWidth,screenHeight)
let path = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: screenWidth, height: screenHeight), cornerRadius: 0)
let circlePath = UIBezierPath(roundedRect: CGRect(x: 30, y: screenHeight/2 - radius/2 + 30 , width: radius-60, height: radius - 60), cornerRadius: radius/2 - 30)
path.append(circlePath)
path.usesEvenOddFillRule = true
fillLayer.path = path.cgPath
fillLayer.fillRule = kCAFillRuleEvenOdd
fillLayer.fillColor = UIColor.black.cgColor
fillLayer.opacity = 0.5
view.layer.addSublayer(fillLayer)