Skip to content

Commit a381878

Browse files
committed
Refactor crop methods.
1 parent 8ce9f22 commit a381878

File tree

1 file changed

+30
-17
lines changed

1 file changed

+30
-17
lines changed

Sources/InteractiveImageView/InteractiveImageView.swift

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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

4145
public 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

203198
private 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

Comments
 (0)