Вы можете обрезать изображение CGImage.cropping(to: CGRect)
.
Установите начало координат CGRect
в верхнем правом углу, где вы хотите начать обрезку, и установите размер в соответствии с размером обрезки, которую выхочу.Затем выполните инициализацию и изображение с этого cgImage
.
let foo = UIImage(named: "fooImage")
guard let croppedCGImage = foo?.cgImage?.cropping(to: CGRect(x: 200, y: 200, width: 375, height: 400) else { return }
guard let croppedImage = UIImage(cgImage: croppedCGImage) else { return }
Документация Apple
Playground Preview
Редактировать: Добавление примера с использованием @IBDesignable
и @IBInspectable
Видео, показывающее использование раскадровки / пера
@IBDesignable
class UIImageViewCroppable: UIImageView {
@IBInspectable public var isCropped: Bool = false {
didSet { updateImage() }
}
@IBInspectable public var croppingRect: CGRect = .zero {
didSet { updateImage() }
}
func updateImage() {
guard isCropped else { return }
guard let croppedCGImage = image?.cgImage?.cropping(to: croppingRect) else { return }
image = UIImage(cgImage: croppedCGImage)
}
}