import UIKit
import FocusableImageView
class ViewController : UIViewController {
@ IBOutlet private weak var stackView : UIStackView !
private let manager = FocusableImageViewManager ( )
private var imageViews : [ FocusableImageView ] { stackView . arrangedSubviews as! [ FocusableImageView ] }
override func viewDidLoad ( ) {
super . viewDidLoad ( )
manager . register ( parentViewController : self , imageViews : imageViews )
}
}
On Xcode, click File > Swift Packages > Add Package Dependency...
Input https://github.com/malt03/FocusableImageView.git
Insert github "malt03/FocusableImageView" to your Cartfile.
Run carthage update.
Link your app with FocusableImageView.framework in Carthage/Build.
Insert pod 'FocusableImageView' to your Podfile.
Run pod install.
Access to inner UIImageView
imageView . inner . kf . setImage ( url ) // Set Image URL with Kingfisher
Additional Animation for ImageView
manager . delegate = self
extension ViewController : FocusableImageViewDelegate {
func selectableImageViewPresentAnimation ( views : [ FocusableImageView ] ) {
views . forEach { $0 . inner . layer . cornerRadius = 0 }
}
func selectableImageViewDismissAnimation ( views : [ FocusableImageView ] ) {
views . forEach { $0 . inner . layer . cornerRadius = 8 }
}
}
manager . configuration = . init (
backgroundColor : . init ( white : 0 , alpha : 0.5 ) ,
animationDuration : 0.5 ,
pageControlConfiguration : . init ( hidesForSinglePage : false , pageIndicatorTintColor : nil , currentPageIndicatorTintColor : nil ) ,
maximumZoomScale : 2 ,
createDismissButton : { ( parentView ) -> UIButton in
let button = UIButton ( )
button . translatesAutoresizingMaskIntoConstraints = false
button . setTitle ( " Close " , for : . normal )
button . setTitleColor ( . white , for : . normal )
button . titleLabel ? . font = UIFont . systemFont ( ofSize : 16 )
parentView . addSubview ( button )
NSLayoutConstraint . activate ( [
button . leadingAnchor . constraint ( equalTo : parentView . leadingAnchor , constant : 16 ) ,
button . topAnchor . constraint ( equalTo : parentView . safeAreaLayoutGuide . topAnchor , constant : 16 ) ,
] )
return button
}
)
FocusableImageViewConfiguration . default = configuration