@@ -34,8 +34,12 @@ public protocol InteractiveImageViewProtocol {
3434 /// Toggle between initial content mode (aspectFill) and nextContentMode.
3535 func toggleImageContentMode( )
3636
37- /// Crop visible image.
38- func cropImage( )
37+ /// Perform croping image process visible image and listen to delegates to get cropped image.
38+ func performCropImage( )
39+
40+ /// Crop and get presented image.
41+ /// - Returns: Returns image croped at current visible content.
42+ func cropAndGetImage( ) -> UIImage ?
3943}
4044
4145public class InteractiveImageView : UIView {
@@ -167,21 +171,8 @@ extension InteractiveImageView: InteractiveImageViewProtocol {
167171 setImage ( configuredImage)
168172 }
169173
170- public func cropImage( ) {
171- guard let imageView = imageView else {
172- delegate? . didFail ( . toGetImageView)
173- return
174- }
175-
176- let cropRect = CGRect ( x: scrollViewOffsetX,
177- y: scrollViewOffsetY,
178- width: self . frame. width,
179- height: self . frame. height)
180-
181- let croppedImage = IIVCropHandler . cropImage ( imageView. image!,
182- toRect: cropRect,
183- viewWidth: IIVImageRect . getImageRect ( fromImageView: imageView) . width,
184- viewHeight: self . imageView!. frame. height)
174+ public func performCropImage( ) {
175+ let croppedImage = cropImage ( )
185176 if let image = croppedImage {
186177 self . delegate? . didCropImage ( image: image, fromView: self )
187178 } else {
@@ -193,6 +184,10 @@ extension InteractiveImageView: InteractiveImageViewProtocol {
193184 scrollView. setZoomScale ( zoomScale, animated: false )
194185 scrollView. setContentOffset ( offset, animated: animated)
195186 }
187+
188+ public func cropAndGetImage( ) -> UIImage ? {
189+ return cropImage ( )
190+ }
196191}
197192
198193// MARK: - Private extension
@@ -202,6 +197,24 @@ extension InteractiveImageView: InteractiveImageViewProtocol {
202197
203198private extension InteractiveImageView {
204199
200+ func cropImage( ) -> UIImage ? {
201+ guard let imageView = imageView else {
202+ delegate? . didFail ( . toGetImageView)
203+ return nil
204+ }
205+
206+ let cropRect = CGRect ( x: scrollViewOffsetX,
207+ y: scrollViewOffsetY,
208+ width: self . frame. width,
209+ height: self . frame. height)
210+
211+ let croppedImage = IIVCropHandler . cropImage ( imageView. image!,
212+ toRect: cropRect,
213+ viewWidth: IIVImageRect . getImageRect ( fromImageView: imageView) . width,
214+ viewHeight: self . imageView!. frame. height)
215+ return croppedImage
216+ }
217+
205218 func setImage( _ image: UIImage ) {
206219 // Remove old view
207220 if let zoomView = imageView {
0 commit comments