|
@@ -37,6 +37,7 @@ class TSPhotoPickerManager: NSObject{
|
|
|
var picker: PhotoPickerController?
|
|
|
var multipleConfig: PickerConfiguration{
|
|
|
var config = PickerConfiguration()
|
|
|
+ config.appearanceStyle = .dark
|
|
|
config.modalPresentationStyle = .overFullScreen
|
|
|
config.themeColor = .themeColor
|
|
|
config.selectOptions = .photo
|
|
@@ -49,6 +50,10 @@ class TSPhotoPickerManager: NSObject{
|
|
|
|
|
|
config.navigationTitleColor = .white
|
|
|
config.navigationTitleDarkColor = .white
|
|
|
+ config.navigationTintColor = .white
|
|
|
+ config.navigationDarkTintColor = .white
|
|
|
+ config.albumList.albumNameColor = .white
|
|
|
+ config.albumList.albumNameDarkColor = .white
|
|
|
|
|
|
config.albumShowMode = .normal
|
|
|
config.photoList.takePictureCompletionToSelected = true
|
|
@@ -79,12 +84,11 @@ class TSPhotoPickerManager: NSObject{
|
|
|
var customCameraConfig = CameraConfiguration()
|
|
|
customCameraConfig.isSaveSystemAlbum = true
|
|
|
customCameraConfig.sessionPreset = .hd1920x1080
|
|
|
- customCameraConfig.aspectRatio = .fullScreen
|
|
|
customCameraConfig.editor.toolsView = .init(toolOptions: [cropSize])
|
|
|
customCameraConfig.editor.cropSize.aspectRatios = aspectRatios
|
|
|
config.photoList.cameraType = .custom(customCameraConfig)
|
|
|
|
|
|
- config.appearanceStyle = .dark
|
|
|
+
|
|
|
config.languageType = LanguageManager.shared.currentLanguage.languageType
|
|
|
config.customLanguages = [CustomLanguage(language: "it", bundle: Bundle(path: Bundle.main.path(forResource: "it", ofType: "lproj")!)!)]
|
|
|
config.photoList.isShowFilterItem = false
|
|
@@ -138,13 +142,14 @@ class TSPhotoPickerManager: NSObject{
|
|
|
checkVideoAuthorization { [weak self] authorized in
|
|
|
guard let self = self else { return }
|
|
|
if authorized {
|
|
|
-
|
|
|
var customCameraConfig = CameraConfiguration()
|
|
|
customCameraConfig.isSaveSystemAlbum = true
|
|
|
customCameraConfig.sessionPreset = .hd1920x1080
|
|
|
- customCameraConfig.aspectRatio = .fullScreen
|
|
|
customCameraConfig.editor.toolsView = .init(toolOptions: [cropSize])
|
|
|
customCameraConfig.editor.cropSize.aspectRatios = aspectRatios
|
|
|
+ customCameraConfig.languageType = LanguageManager.shared.currentLanguage.languageType
|
|
|
+ customCameraConfig.customLanguages = [CustomLanguage(language: "it", bundle: Bundle(path: Bundle.main.path(forResource: "it", ofType: "lproj")!)!)]
|
|
|
+
|
|
|
let cameraController = CameraController(config: customCameraConfig, type: .photo,delegate: self)
|
|
|
viewController?.present(cameraController, animated: true, completion: nil)
|
|
|
self.cameraController = cameraController
|
|
@@ -173,7 +178,8 @@ class TSPhotoPickerManager: NSObject{
|
|
|
config.textManager.picker.albumCameraRollTitle = .custom("Used Photo".localized)
|
|
|
config.textManager.picker.photoList.emptyTitle = .custom("")
|
|
|
config.textManager.picker.photoList.emptySubTitle = .custom("No used photo. Select from Photos or take one to continue.".localized)
|
|
|
-
|
|
|
+ config.allowLoadPhotoLibrary = false
|
|
|
+
|
|
|
var photoAsset:[PhotoAsset] = []
|
|
|
let allKeys = TSDBKeyManager.getAllKeys()
|
|
|
for item in allKeys {
|
|
@@ -197,6 +203,7 @@ class TSPhotoPickerManager: NSObject{
|
|
|
picker.modalTransitionStyle = .coverVertical
|
|
|
viewController?.present(picker, animated: true, completion: nil)
|
|
|
self.picker = picker
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
@@ -207,17 +214,22 @@ class TSPhotoPickerManager: NSObject{
|
|
|
/// 检查相册权限
|
|
|
private func checkPhotoLibraryPermission(completion: @escaping (Bool) -> Void) {
|
|
|
let status = PHPhotoLibrary.authorizationStatus()
|
|
|
- switch status {
|
|
|
- case .authorized:
|
|
|
- completion(true)
|
|
|
- case .notDetermined:
|
|
|
- PHPhotoLibrary.requestAuthorization { newStatus in
|
|
|
+
|
|
|
+ DispatchQueue.main.async {
|
|
|
+ switch status {
|
|
|
+ case .authorized:
|
|
|
+ completion(true)
|
|
|
+ case .notDetermined:
|
|
|
+ PHPhotoLibrary.requestAuthorization { newStatus in
|
|
|
+ DispatchQueue.main.async {
|
|
|
+ completion(newStatus == .authorized)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ default:
|
|
|
DispatchQueue.main.async {
|
|
|
- completion(newStatus == .authorized)
|
|
|
+ completion(false)
|
|
|
}
|
|
|
}
|
|
|
- default:
|
|
|
- completion(false)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -225,21 +237,21 @@ class TSPhotoPickerManager: NSObject{
|
|
|
/// 检查相机权限状态
|
|
|
func checkVideoAuthorization(completion: @escaping (Bool) -> Void) {
|
|
|
let status = AVCaptureDevice.authorizationStatus(for: .video)
|
|
|
-
|
|
|
- switch status {
|
|
|
- case .authorized:
|
|
|
- completion(true)
|
|
|
- case .notDetermined:
|
|
|
- AVCaptureDevice.requestAccess(for: .video) { granted in
|
|
|
- DispatchQueue.main.async {
|
|
|
- let currentStatus = AVCaptureDevice.authorizationStatus(for: .video)
|
|
|
- completion(granted)
|
|
|
- }
|
|
|
- }
|
|
|
- case .denied, .restricted:
|
|
|
- completion(false)
|
|
|
- @unknown default:
|
|
|
- completion(false)
|
|
|
+ DispatchQueue.main.async {
|
|
|
+ switch status {
|
|
|
+ case .authorized:
|
|
|
+ completion(true)
|
|
|
+ case .notDetermined:
|
|
|
+ AVCaptureDevice.requestAccess(for: .video) { granted in
|
|
|
+ DispatchQueue.main.async {
|
|
|
+ completion(granted)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ case .denied, .restricted:
|
|
|
+ completion(false)
|
|
|
+ @unknown default:
|
|
|
+ completion(false)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|