Skip to content

Commit 5e87987

Browse files
jangelsbmichaelhenry
authored andcommitted
* Add the ability to pass in contentMode (for the imageView and the animations)
* Explicitly set imageContentMode in the init * Close button to do a normal dismiss which does the transition animation * Minor clean up
1 parent 11648e4 commit 5e87987

File tree

4 files changed

+42
-16
lines changed

4 files changed

+42
-16
lines changed

Sources/ImageViewer_swift/ImageCarouselViewController.swift

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class ImageCarouselViewController:UIPageViewController, ImageViewerTransi
3434
}
3535
}
3636

37+
var imageContentMode: UIView.ContentMode = .scaleAspectFill
3738
var options:[ImageViewerOption] = []
3839

3940
private var onRightNavBarTapped:((Int) -> Void)?
@@ -55,7 +56,7 @@ public class ImageCarouselViewController:UIPageViewController, ImageViewerTransi
5556

5657
private(set) lazy var navItem = UINavigationItem()
5758

58-
private let imageViewerPresentationDelegate = ImageViewerTransitionPresentationManager()
59+
private let imageViewerPresentationDelegate: ImageViewerTransitionPresentationManager
5960

6061
public init(
6162
sourceView:UIImageView,
@@ -70,6 +71,19 @@ public class ImageCarouselViewController:UIPageViewController, ImageViewerTransi
7071
self.imageDatasource = imageDataSource
7172
self.imageLoader = imageLoader
7273
let pageOptions = [UIPageViewController.OptionsKey.interPageSpacing: 20]
74+
75+
var _imageContentMode = imageContentMode
76+
options.forEach {
77+
switch $0 {
78+
case .contentMode(let contentMode):
79+
_imageContentMode = contentMode
80+
default:
81+
break
82+
}
83+
}
84+
imageContentMode = _imageContentMode
85+
86+
self.imageViewerPresentationDelegate = ImageViewerTransitionPresentationManager(imageContentMode: imageContentMode)
7387
super.init(
7488
transitionStyle: .scroll,
7589
navigationOrientation: .horizontal,
@@ -112,6 +126,8 @@ public class ImageCarouselViewController:UIPageViewController, ImageViewerTransi
112126
switch $0 {
113127
case .theme(let theme):
114128
self.theme = theme
129+
case .contentMode(let contentMode):
130+
self.imageContentMode = contentMode
115131
case .closeIcon(let icon):
116132
navItem.leftBarButtonItem?.image = icon
117133
case .rightNavItemTitle(let title, let onTap):
@@ -152,16 +168,7 @@ public class ImageCarouselViewController:UIPageViewController, ImageViewerTransi
152168

153169
@objc
154170
private func dismiss(_ sender:UIBarButtonItem) {
155-
dismissMe(completion: nil)
156-
}
157-
158-
public func dismissMe(completion: (() -> Void)? = nil) {
159-
sourceView?.alpha = 1.0
160-
UIView.animate(withDuration: 0.235, animations: {
161-
self.view.alpha = 0.0
162-
}) { _ in
163-
self.dismiss(animated: false, completion: completion)
164-
}
171+
self.dismiss(animated: true, completion: nil)
165172
}
166173

167174
deinit {

Sources/ImageViewer_swift/ImageViewerOption.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import UIKit
33
public enum ImageViewerOption {
44

55
case theme(ImageViewerTheme)
6+
case contentMode(UIView.ContentMode)
67
case closeIcon(UIImage)
78
case rightNavItemTitle(String, onTap: ((Int) -> Void)?)
89
case rightNavItemIcon(UIImage, onTap: ((Int) -> Void)?)

Sources/ImageViewer_swift/ImageViewerTransitionPresentationManager.swift

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@ protocol ImageViewerTransitionViewControllerConvertible {
2020
final class ImageViewerTransitionPresentationAnimator:NSObject {
2121

2222
let isPresenting: Bool
23+
let imageContentMode: UIView.ContentMode
2324

24-
init(isPresenting: Bool) {
25+
init(isPresenting: Bool, imageContentMode: UIView.ContentMode) {
2526
self.isPresenting = isPresenting
27+
self.imageContentMode = imageContentMode
2628
super.init()
2729
}
2830
}
@@ -64,7 +66,7 @@ extension ImageViewerTransitionPresentationAnimator: UIViewControllerAnimatedTra
6466
-> UIImageView {
6567
let dummyImageView:UIImageView = UIImageView(frame: frame)
6668
dummyImageView.clipsToBounds = true
67-
dummyImageView.contentMode = .scaleAspectFill
69+
dummyImageView.contentMode = imageContentMode
6870
dummyImageView.alpha = 1.0
6971
dummyImageView.image = image
7072
return dummyImageView
@@ -155,6 +157,11 @@ final class ImageViewerTransitionPresentationController: UIPresentationControlle
155157
}
156158

157159
final class ImageViewerTransitionPresentationManager: NSObject {
160+
private let imageContentMode: UIView.ContentMode
161+
162+
public init(imageContentMode: UIView.ContentMode) {
163+
self.imageContentMode = imageContentMode
164+
}
158165

159166
}
160167

@@ -177,13 +184,13 @@ extension ImageViewerTransitionPresentationManager: UIViewControllerTransitionin
177184
source: UIViewController
178185
) -> UIViewControllerAnimatedTransitioning? {
179186

180-
return ImageViewerTransitionPresentationAnimator(isPresenting: true)
187+
return ImageViewerTransitionPresentationAnimator(isPresenting: true, imageContentMode: imageContentMode)
181188
}
182189

183190
func animationController(
184191
forDismissed dismissed: UIViewController
185192
) -> UIViewControllerAnimatedTransitioning? {
186-
return ImageViewerTransitionPresentationAnimator(isPresenting: false)
193+
return ImageViewerTransitionPresentationAnimator(isPresenting: false, imageContentMode: imageContentMode)
187194
}
188195
}
189196

Sources/ImageViewer_swift/UIImageView_Extensions.swift

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,18 @@ extension UIImageView {
118118
}
119119

120120
isUserInteractionEnabled = true
121-
contentMode = .scaleAspectFill
121+
122+
var imageContentMode: UIView.ContentMode = .scaleAspectFill
123+
options.forEach {
124+
switch $0 {
125+
case .contentMode(let contentMode):
126+
imageContentMode = contentMode
127+
default:
128+
break
129+
}
130+
}
131+
contentMode = imageContentMode
132+
122133
clipsToBounds = true
123134

124135
if _tapRecognizer == nil {

0 commit comments

Comments
 (0)