마침내 어떻게 작동하는지 알아 냈습니다. 다음은 코드입니다.
func croppedImage() -> UIImage {
let cropSize = CGSize(width: 280, height: 280)
let scale = (imageView.image?.size.height)!/imageView.frame.height
let cropSizeScaled = CGSize(width: cropSize.width * scale, height: cropSize.height * scale)
if #available(iOS 10.0, *) {
let r = UIGraphicsImageRenderer(size: cropSizeScaled)
let x = -scrollView.contentOffset.x * scale
let y = -scrollView.contentOffset.y * scale
return r.image { _ in
imageView.image!.draw(at: CGPoint(x: x, y: y))
}
} else {
return UIImage()
}
}
그래서 먼저 imageView와 실제 이미지의 크기를 계산합니다.
그런 다음 사진에 표시된대로 자르기 상자의 CGSize를 만듭니다. 그러나 너비와 높이는 배율 인수로 조정해야합니다. (예 : 280 * 6.5)
전화가 iOS 10.0 for UIGraphicsImageRender를 실행하는지 확인해야합니다. 그렇지 않은 경우 작동하지 않습니다.
자르기 상자 크기로이 값을 초기화하십시오.
이미지는 다음 오프셋되어야하며, 이것은 scrollView의 내용 오프셋을 가져 와서 부정하고 배율 인수를 곱하여 계산됩니다.
그런 다음 그 시점에서 그려진 이미지를 반환하십시오!
너무 넓습니다. 어떤 부분에 문제가 있습니까? "이미지를 스크롤하십시오"또는 "자르기"? '자르기'의 경우 http://stackoverflow.com/questions/158914/cropping-an-uiimage?rq=1 중복되지 않은 이유가 무엇인가요? – matt