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