diff --git a/.swiftlint.yml b/.swiftlint.yml index 65d807e..8752410 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,5 +1,8 @@ statement_position: statement_mode: uncuddled_else +trailing_comma: + mandatory_comma: true + disabled_rules: - line_length diff --git a/RIGImageGallery/RIGAutoCenteringScrollView.swift b/RIGImageGallery/RIGAutoCenteringScrollView.swift index 0e78b7d..d7af949 100644 --- a/RIGImageGallery/RIGAutoCenteringScrollView.swift +++ b/RIGImageGallery/RIGAutoCenteringScrollView.swift @@ -48,6 +48,8 @@ class RIGAutoCenteringScrollView: UIScrollView { override init(frame: CGRect) { super.init(frame: frame) + showsVerticalScrollIndicator = false + showsHorizontalScrollIndicator = false delegate = self } diff --git a/RIGImageGalleryDemo/Assets/Assets.xcassets/1.imageset/1.png b/RIGImageGalleryDemo/Assets/Assets.xcassets/1.imageset/1.png new file mode 100644 index 0000000..da58b78 Binary files /dev/null and b/RIGImageGalleryDemo/Assets/Assets.xcassets/1.imageset/1.png differ diff --git a/RIGImageGalleryDemo/Assets/Assets.xcassets/1.imageset/Contents.json b/RIGImageGalleryDemo/Assets/Assets.xcassets/1.imageset/Contents.json new file mode 100644 index 0000000..4f00234 --- /dev/null +++ b/RIGImageGalleryDemo/Assets/Assets.xcassets/1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/RIGImageGalleryDemo/Assets/Assets.xcassets/2.imageset/2.png b/RIGImageGalleryDemo/Assets/Assets.xcassets/2.imageset/2.png new file mode 100644 index 0000000..3772f71 Binary files /dev/null and b/RIGImageGalleryDemo/Assets/Assets.xcassets/2.imageset/2.png differ diff --git a/RIGImageGalleryDemo/Assets/Assets.xcassets/2.imageset/Contents.json b/RIGImageGalleryDemo/Assets/Assets.xcassets/2.imageset/Contents.json new file mode 100644 index 0000000..e203b28 --- /dev/null +++ b/RIGImageGalleryDemo/Assets/Assets.xcassets/2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "2.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/RIGImageGalleryDemo/Assets/Assets.xcassets/3.imageset/3.png b/RIGImageGalleryDemo/Assets/Assets.xcassets/3.imageset/3.png new file mode 100644 index 0000000..cba79e8 Binary files /dev/null and b/RIGImageGalleryDemo/Assets/Assets.xcassets/3.imageset/3.png differ diff --git a/RIGImageGalleryDemo/Assets/Assets.xcassets/3.imageset/Contents.json b/RIGImageGalleryDemo/Assets/Assets.xcassets/3.imageset/Contents.json new file mode 100644 index 0000000..e455e3b --- /dev/null +++ b/RIGImageGalleryDemo/Assets/Assets.xcassets/3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "3.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/RIGImageGalleryDemo/Assets/Assets.xcassets/4.imageset/4.jpg b/RIGImageGalleryDemo/Assets/Assets.xcassets/4.imageset/4.jpg new file mode 100644 index 0000000..cc714e3 Binary files /dev/null and b/RIGImageGalleryDemo/Assets/Assets.xcassets/4.imageset/4.jpg differ diff --git a/RIGImageGalleryDemo/Assets/Assets.xcassets/4.imageset/Contents.json b/RIGImageGalleryDemo/Assets/Assets.xcassets/4.imageset/Contents.json new file mode 100644 index 0000000..a21b3af --- /dev/null +++ b/RIGImageGalleryDemo/Assets/Assets.xcassets/4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "4.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/RIGImageGalleryDemo/Assets/Assets.xcassets/5.imageset/5.png b/RIGImageGalleryDemo/Assets/Assets.xcassets/5.imageset/5.png new file mode 100644 index 0000000..5873fc0 Binary files /dev/null and b/RIGImageGalleryDemo/Assets/Assets.xcassets/5.imageset/5.png differ diff --git a/RIGImageGalleryDemo/Assets/Assets.xcassets/5.imageset/Contents.json b/RIGImageGalleryDemo/Assets/Assets.xcassets/5.imageset/Contents.json new file mode 100644 index 0000000..689e0d0 --- /dev/null +++ b/RIGImageGalleryDemo/Assets/Assets.xcassets/5.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "5.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/RIGImageGalleryDemo/Assets/Assets.xcassets/6.imageset/6.png b/RIGImageGalleryDemo/Assets/Assets.xcassets/6.imageset/6.png new file mode 100644 index 0000000..4f3c30f Binary files /dev/null and b/RIGImageGalleryDemo/Assets/Assets.xcassets/6.imageset/6.png differ diff --git a/RIGImageGalleryDemo/Assets/Assets.xcassets/6.imageset/Contents.json b/RIGImageGalleryDemo/Assets/Assets.xcassets/6.imageset/Contents.json new file mode 100644 index 0000000..155d54e --- /dev/null +++ b/RIGImageGalleryDemo/Assets/Assets.xcassets/6.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "6.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/RIGImageGalleryDemo/View Controller/ViewController.swift b/RIGImageGalleryDemo/View Controller/ViewController.swift index 9f63f78..f73b31e 100644 --- a/RIGImageGalleryDemo/View Controller/ViewController.swift +++ b/RIGImageGalleryDemo/View Controller/ViewController.swift @@ -18,12 +18,14 @@ class ViewController: UIViewController { view.backgroundColor = .white navigationItem.title = NSLocalizedString("RIG Image Gallery", comment: "Main screen title") - let galleryButton = UIButton(type: .system) - galleryButton.translatesAutoresizingMaskIntoConstraints = false - galleryButton.addTarget(self, action: #selector(ViewController.showGallery(_:)), for: .touchUpInside) - galleryButton.setTitle(NSLocalizedString("Show Gallery", comment: "Show gallery button title"), for: UIControlState()) - - let stackView = UIStackView(arrangedSubviews: [galleryButton]) + let remoteGalleryButton = UIButton(type: .system) + remoteGalleryButton.addTarget(self, action: #selector(ViewController.showOnlineGallery(_:)), for: .touchUpInside) + remoteGalleryButton.setTitle(NSLocalizedString("Show Online Gallery", comment: "Show gallery button title"), for: .normal) + let localGalleryButton = UIButton(type: .system) + localGalleryButton.setTitle(NSLocalizedString("Show Local Gallery", comment: "Show Local Gallery"), for: .normal) + localGalleryButton.addTarget(self, action: #selector(ViewController.showLocalGallery(_:)), for: .touchUpInside) + + let stackView = UIStackView(arrangedSubviews: [remoteGalleryButton, localGalleryButton]) stackView.alignment = .center stackView.axis = .vertical stackView.isLayoutMarginsRelativeArrangement = true @@ -47,8 +49,8 @@ class ViewController: UIViewController { private extension ViewController { - @objc func showGallery(_ sender: UIButton) { - let photoViewController = loadImages() + @objc func showOnlineGallery(_ sender: UIButton) { + let photoViewController = prepareRemoteGallery() photoViewController.dismissHandler = dismissPhotoViewer photoViewController.actionButtonHandler = actionButtonHandler photoViewController.actionButton = UIBarButtonItem(barButtonSystemItem: .action, target: nil, action: nil) @@ -58,6 +60,16 @@ private extension ViewController { present(navigationController, animated: true, completion: nil) } + @objc func showLocalGallery(_ sender: UIButton) { + let photoViewController = prepareLocalGallery() + photoViewController.dismissHandler = dismissPhotoViewer + photoViewController.actionButtonHandler = actionButtonHandler + photoViewController.actionButton = UIBarButtonItem(barButtonSystemItem: .action, target: nil, action: nil) + photoViewController.traitCollectionChangeHandler = traitCollectionChangeHandler + photoViewController.countUpdateHandler = updateCount + let navigationController = navBarWrappedViewController(photoViewController) + present(navigationController, animated: true, completion: nil) + } } private extension ViewController { @@ -91,7 +103,7 @@ private extension ViewController { "https://placehold.it/150x350", ].flatMap(URL.init(string:)) - func loadImages() -> RIGImageGalleryViewController { + func prepareRemoteGallery() -> RIGImageGalleryViewController { let urls = type(of: self).urls @@ -111,6 +123,19 @@ private extension ViewController { return rigController } + func prepareLocalGallery() -> RIGImageGalleryViewController { + + let items: [UIImage] = ["1", "2", "3", "4", "5", "6"].flatMap(UIImage.init(named:)) + + let rigItems = items.map { item in + RIGImageGalleryItem(image: item) + } + + let rigController = RIGImageGalleryViewController(images: rigItems) + + return rigController + } + func navBarWrappedViewController(_ viewController: UIViewController) -> UINavigationController { let navigationController = UINavigationController(rootViewController: viewController) navigationController.navigationBar.barStyle = .blackTranslucent diff --git a/Resources/rig_demo.gif b/Resources/rig_demo.gif index c3c9ac1..a19f5dd 100644 Binary files a/Resources/rig_demo.gif and b/Resources/rig_demo.gif differ