From 3ad82193e3d23fc31e58ff2388439971fd3a9e31 Mon Sep 17 00:00:00 2001 From: hnoarcos Date: Thu, 10 Jun 2021 14:10:41 -0600 Subject: [PATCH 1/5] Added theme var that can be set, also implemented this theme to all crop assets and text --- .../Picker/FMPhotoPickerViewController.swift | 5 +++++ .../Editor/FMImageEditorViewController.swift | 4 ++-- .../Views/Crop/FMCropCropBoxCornersView.swift | 16 ++++++++-------- .../Presenter/Editor/Views/FMCropCell.swift | 4 ++-- .../FMPhotoPicker/source/Utilities/Const.swift | 2 ++ 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/FMPhotoPicker/FMPhotoPicker/source/Scene/Picker/FMPhotoPickerViewController.swift b/FMPhotoPicker/FMPhotoPicker/source/Scene/Picker/FMPhotoPickerViewController.swift index 209f81e..87431af 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Scene/Picker/FMPhotoPickerViewController.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Scene/Picker/FMPhotoPickerViewController.swift @@ -79,6 +79,11 @@ public class FMPhotoPickerViewController: UIViewController { setupView() } + // MARK: - Public + public func setThemeColor(color: UIColor) { + themeColor = color + } + // MARK: - Setup View private func setupView() { self.imageCollectionView.register(FMPhotoPickerImageCollectionViewCell.self, forCellWithReuseIdentifier: FMPhotoPickerImageCollectionViewCell.reuseId) diff --git a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift index 074fa0a..c5a3551 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift @@ -369,8 +369,8 @@ public class FMImageEditorViewController: UIViewController { } private func openCropsMenu() { - cropMenuButton.tintColor = kRedColor - cropMenuButton.setTitleColor(kRedColor, for: .normal) + cropMenuButton.tintColor = themeColor + cropMenuButton.setTitleColor(themeColor, for: .normal) filterMenuButton.tintColor = kBlackColor filterMenuButton.setTitleColor(kBlackColor, for: .normal) diff --git a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/Crop/FMCropCropBoxCornersView.swift b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/Crop/FMCropCropBoxCornersView.swift index 5012bac..38b0573 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/Crop/FMCropCropBoxCornersView.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/Crop/FMCropCropBoxCornersView.swift @@ -76,17 +76,17 @@ class FMCropCropBoxCornersView: UIView { borderView.layer.borderWidth = borderWidth borderView.layer.borderColor = UIColor.white.cgColor - topLeftView.backgroundColor = kRedColor - topRightView.backgroundColor = kRedColor + topLeftView.backgroundColor = themeColor + topRightView.backgroundColor = themeColor - rightTopView.backgroundColor = kRedColor - rightBottomView.backgroundColor = kRedColor + rightTopView.backgroundColor = themeColor + rightBottomView.backgroundColor = themeColor - bottomRightView.backgroundColor = kRedColor - bottomLeftView.backgroundColor = kRedColor + bottomRightView.backgroundColor = themeColor + bottomLeftView.backgroundColor = themeColor - leftBottomView.backgroundColor = kRedColor - leftTopView.backgroundColor = kRedColor + leftBottomView.backgroundColor = themeColor + leftTopView.backgroundColor = themeColor addSubview(borderView) diff --git a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/FMCropCell.swift b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/FMCropCell.swift index 0e0b064..dcf7e57 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/FMCropCell.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/FMCropCell.swift @@ -41,9 +41,9 @@ class FMCropCell: UICollectionViewCell { public func setSelected() { let tintedImage = imageView.image?.withRenderingMode(.alwaysTemplate) imageView.image = tintedImage - imageView.tintColor = kRedColor + imageView.tintColor = themeColor - name.textColor = kRedColor + name.textColor = themeColor } public func setDeselected() { diff --git a/FMPhotoPicker/FMPhotoPicker/source/Utilities/Const.swift b/FMPhotoPicker/FMPhotoPicker/source/Utilities/Const.swift index e8b1f8c..dc00ef4 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Utilities/Const.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Utilities/Const.swift @@ -17,12 +17,14 @@ internal let kRedColor = UIColor(red: 1, green: 81/255, blue: 81/255, alpha: 1) internal let kGrayColor = UIColor(red: 114/255, green: 114/255, blue: 114/255, alpha: 1) internal let kBlackColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1) internal let kBackgroundColor = UIColor(red: 242/255, green: 242/255, blue: 242/255, alpha: 1) +public var themeColor: UIColor = kRedColor internal let kTransparentBackgroundColor = UIColor(white: 1, alpha: 0.9) internal let kBorderColor = UIColor(red: 221/255, green: 221/255, blue: 221/255, alpha: 1) internal let kDefaultFilter = FMFilter.None internal let kDefaultCrop = FMCrop.ratioCustom + internal let kEpsilon: CGFloat = 0.01 internal let kFilterPreviewImageSize = CGSize(width: 90, height: 90) From 66a157e6a111350678f8a464a10283031d231d9b Mon Sep 17 00:00:00 2001 From: hnoarcos Date: Thu, 10 Jun 2021 14:23:00 -0600 Subject: [PATCH 2/5] Moved setting theme color to config object --- .../source/Scene/Picker/FMPhotoPickerViewController.swift | 5 ----- .../FMPhotoPicker/source/Utilities/FMPhotoPickerConfig.swift | 4 +++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/FMPhotoPicker/FMPhotoPicker/source/Scene/Picker/FMPhotoPickerViewController.swift b/FMPhotoPicker/FMPhotoPicker/source/Scene/Picker/FMPhotoPickerViewController.swift index 87431af..209f81e 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Scene/Picker/FMPhotoPickerViewController.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Scene/Picker/FMPhotoPickerViewController.swift @@ -79,11 +79,6 @@ public class FMPhotoPickerViewController: UIViewController { setupView() } - // MARK: - Public - public func setThemeColor(color: UIColor) { - themeColor = color - } - // MARK: - Setup View private func setupView() { self.imageCollectionView.register(FMPhotoPickerImageCollectionViewCell.self, forCellWithReuseIdentifier: FMPhotoPickerImageCollectionViewCell.reuseId) diff --git a/FMPhotoPicker/FMPhotoPicker/source/Utilities/FMPhotoPickerConfig.swift b/FMPhotoPicker/FMPhotoPicker/source/Utilities/FMPhotoPickerConfig.swift index 3306e1e..ccc1842 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Utilities/FMPhotoPickerConfig.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Utilities/FMPhotoPickerConfig.swift @@ -8,6 +8,7 @@ import Foundation import Photos +import UIKit public enum FMSelectMode { case multiple @@ -51,6 +52,7 @@ public struct FMPhotoPickerConfig { public var availableCrops: [FMCroppable]? = kDefaultAvailableCrops public var useCropFirst: Bool = false public var alertController: FMAlertable = FMAlert() + public var themeColor: UIColor = kRedColor /// Whether you want FMPhotoPicker returns PHAsset instead of UIImage. public var shouldReturnAsset: Bool = false @@ -91,6 +93,6 @@ public struct FMPhotoPickerConfig { ] public init() { - + } } From c0af3dd1f77cb01d487f10e4b5daf6f0214f14df Mon Sep 17 00:00:00 2001 From: hnoarcos Date: Thu, 10 Jun 2021 14:55:23 -0600 Subject: [PATCH 3/5] Created a property observer on config object to update the theme color --- .../Editor/FMImageEditorViewController.swift | 4 ++-- .../Views/Crop/FMCropCropBoxCornersView.swift | 16 ++++++++-------- .../Presenter/Editor/Views/FMCropCell.swift | 4 ++-- .../FMPhotoPicker/source/Utilities/Const.swift | 2 +- .../source/Utilities/FMPhotoPickerConfig.swift | 6 +++++- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift index c5a3551..d51f067 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift @@ -369,8 +369,8 @@ public class FMImageEditorViewController: UIViewController { } private func openCropsMenu() { - cropMenuButton.tintColor = themeColor - cropMenuButton.setTitleColor(themeColor, for: .normal) + cropMenuButton.tintColor = kThemeColor + cropMenuButton.setTitleColor(kThemeColor, for: .normal) filterMenuButton.tintColor = kBlackColor filterMenuButton.setTitleColor(kBlackColor, for: .normal) diff --git a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/Crop/FMCropCropBoxCornersView.swift b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/Crop/FMCropCropBoxCornersView.swift index 38b0573..f1481a4 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/Crop/FMCropCropBoxCornersView.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/Crop/FMCropCropBoxCornersView.swift @@ -76,17 +76,17 @@ class FMCropCropBoxCornersView: UIView { borderView.layer.borderWidth = borderWidth borderView.layer.borderColor = UIColor.white.cgColor - topLeftView.backgroundColor = themeColor - topRightView.backgroundColor = themeColor + topLeftView.backgroundColor = kThemeColor + topRightView.backgroundColor = kThemeColor - rightTopView.backgroundColor = themeColor - rightBottomView.backgroundColor = themeColor + rightTopView.backgroundColor = kThemeColor + rightBottomView.backgroundColor = kThemeColor - bottomRightView.backgroundColor = themeColor - bottomLeftView.backgroundColor = themeColor + bottomRightView.backgroundColor = kThemeColor + bottomLeftView.backgroundColor = kThemeColor - leftBottomView.backgroundColor = themeColor - leftTopView.backgroundColor = themeColor + leftBottomView.backgroundColor = kThemeColor + leftTopView.backgroundColor = kThemeColor addSubview(borderView) diff --git a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/FMCropCell.swift b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/FMCropCell.swift index dcf7e57..408694a 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/FMCropCell.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/FMCropCell.swift @@ -41,9 +41,9 @@ class FMCropCell: UICollectionViewCell { public func setSelected() { let tintedImage = imageView.image?.withRenderingMode(.alwaysTemplate) imageView.image = tintedImage - imageView.tintColor = themeColor + imageView.tintColor = kThemeColor - name.textColor = themeColor + name.textColor = kThemeColor } public func setDeselected() { diff --git a/FMPhotoPicker/FMPhotoPicker/source/Utilities/Const.swift b/FMPhotoPicker/FMPhotoPicker/source/Utilities/Const.swift index dc00ef4..c966951 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Utilities/Const.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Utilities/Const.swift @@ -17,7 +17,7 @@ internal let kRedColor = UIColor(red: 1, green: 81/255, blue: 81/255, alpha: 1) internal let kGrayColor = UIColor(red: 114/255, green: 114/255, blue: 114/255, alpha: 1) internal let kBlackColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1) internal let kBackgroundColor = UIColor(red: 242/255, green: 242/255, blue: 242/255, alpha: 1) -public var themeColor: UIColor = kRedColor +public var kThemeColor: UIColor = kRedColor internal let kTransparentBackgroundColor = UIColor(white: 1, alpha: 0.9) internal let kBorderColor = UIColor(red: 221/255, green: 221/255, blue: 221/255, alpha: 1) diff --git a/FMPhotoPicker/FMPhotoPicker/source/Utilities/FMPhotoPickerConfig.swift b/FMPhotoPicker/FMPhotoPicker/source/Utilities/FMPhotoPickerConfig.swift index ccc1842..ea7ac34 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Utilities/FMPhotoPickerConfig.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Utilities/FMPhotoPickerConfig.swift @@ -52,7 +52,11 @@ public struct FMPhotoPickerConfig { public var availableCrops: [FMCroppable]? = kDefaultAvailableCrops public var useCropFirst: Bool = false public var alertController: FMAlertable = FMAlert() - public var themeColor: UIColor = kRedColor + public var themeColor: UIColor = kRedColor { + didSet { + kThemeColor = themeColor + } + } /// Whether you want FMPhotoPicker returns PHAsset instead of UIImage. public var shouldReturnAsset: Bool = false From bf48eed1edf477da491da9a0c99457dee5fab014 Mon Sep 17 00:00:00 2001 From: hnoarcos Date: Thu, 10 Jun 2021 15:15:54 -0600 Subject: [PATCH 4/5] Implemented themeColor to filters --- .../Scene/Presenter/Editor/FMImageEditorViewController.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift index d51f067..d93ba2d 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift @@ -371,8 +371,8 @@ public class FMImageEditorViewController: UIViewController { private func openCropsMenu() { cropMenuButton.tintColor = kThemeColor cropMenuButton.setTitleColor(kThemeColor, for: .normal) - filterMenuButton.tintColor = kBlackColor - filterMenuButton.setTitleColor(kBlackColor, for: .normal) + filterMenuButton.tintColor = kThemeColor + filterMenuButton.setTitleColor(kThemeColor, for: .normal) showAnimatedCropMenu() From 8b6c8df4ba5869c24dd5102ff320a068b126db33 Mon Sep 17 00:00:00 2001 From: hnoarcos Date: Thu, 10 Jun 2021 15:52:31 -0600 Subject: [PATCH 5/5] There were still some assets that were not being updated with the colorTheme color, fixed that --- .../Presenter/Editor/FMImageEditorViewController.swift | 8 ++++---- .../Scene/Presenter/Editor/Views/FMFilterCell.swift | 4 ++-- .../FMPhotoPickerExample/ViewController.swift | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift index d93ba2d..e6edcc2 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/FMImageEditorViewController.swift @@ -351,8 +351,8 @@ public class FMImageEditorViewController: UIViewController { } private func openFiltersMenu() { - filterMenuButton.tintColor = kRedColor - filterMenuButton.setTitleColor(kRedColor, for: .normal) + filterMenuButton.tintColor = kThemeColor + filterMenuButton.setTitleColor(kThemeColor, for: .normal) cropMenuButton.tintColor = kBlackColor cropMenuButton.setTitleColor(kBlackColor, for: .normal) @@ -371,8 +371,8 @@ public class FMImageEditorViewController: UIViewController { private func openCropsMenu() { cropMenuButton.tintColor = kThemeColor cropMenuButton.setTitleColor(kThemeColor, for: .normal) - filterMenuButton.tintColor = kThemeColor - filterMenuButton.setTitleColor(kThemeColor, for: .normal) + filterMenuButton.tintColor = kBlackColor + filterMenuButton.setTitleColor(kBlackColor, for: .normal) showAnimatedCropMenu() diff --git a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/FMFilterCell.swift b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/FMFilterCell.swift index 3638714..c314b4f 100644 --- a/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/FMFilterCell.swift +++ b/FMPhotoPicker/FMPhotoPicker/source/Scene/Presenter/Editor/Views/FMFilterCell.swift @@ -30,7 +30,7 @@ class FMFilterCell: UICollectionViewCell { selectCircleView.frame = imageView.frame.insetBy(dx: -3, dy: -3) selectCircleView.layer.cornerRadius = selectCircleView.frame.width / 2 selectCircleView.layer.borderWidth = 2 - selectCircleView.layer.borderColor = kRedColor.cgColor + selectCircleView.layer.borderColor = kThemeColor.cgColor // hide selectCircleView by default selectCircleView.isHidden = true @@ -54,7 +54,7 @@ class FMFilterCell: UICollectionViewCell { public func setSelected() { selectCircleView.isHidden = false - name.textColor = kRedColor + name.textColor = kThemeColor } public func setDeselected() { diff --git a/FMPhotoPickerExample/FMPhotoPickerExample/ViewController.swift b/FMPhotoPickerExample/FMPhotoPickerExample/ViewController.swift index 6477334..fb5fc8c 100644 --- a/FMPhotoPickerExample/FMPhotoPickerExample/ViewController.swift +++ b/FMPhotoPickerExample/FMPhotoPickerExample/ViewController.swift @@ -89,6 +89,7 @@ class ViewController: UIViewController, FMPhotoPickerViewControllerDelegate, FMI config.maxVideo = self.maxVideo config.forceCropEnabled = forceCropEnabled.isOn config.eclipsePreviewEnabled = eclipsePreviewEnabled.isOn + config.themeColor = .purple // in force crop mode, only the first crop option is available config.availableCrops = [