Commit cd2a7ab3 authored by shenyong's avatar shenyong

fix bugs

parent eb771ea4
...@@ -94,10 +94,15 @@ class AppDelegate: UIResponder, UIApplicationDelegate { ...@@ -94,10 +94,15 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// ] // ]
// let dic = attribution.jso // let dic = attribution.jso
Print("获取当前归因信息",attribution?.jsonResponse as Any) Print("获取当前归因信息",attribution?.jsonResponse as Any)
// APIReportManager.shared.startReport(type: .source_atrribute,ext: pram)
//APIReportManager.shared.startReport(type: .source_atrribute,ext: pram)
} }
PMLoadingHUD.share.config()
return true return true
} }
......
...@@ -187,6 +187,9 @@ class GroupDatabase { ...@@ -187,6 +187,9 @@ class GroupDatabase {
// 根据mediaType查询数据 // 根据mediaType查询数据
func queryByMediaType(_ mediaType: Int) -> [(localIdentifier: String, assetSize: Double, createDate: Date, mediaType: Int, groupId: String)] { func queryByMediaType(_ mediaType: Int) -> [(localIdentifier: String, assetSize: Double, createDate: Date, mediaType: Int, groupId: String)] {
if PhotoManager.shared.permissionStatus != .authorized {
return []
}
let queryStatementString = "SELECT * FROM groups WHERE mediaType = ?;" let queryStatementString = "SELECT * FROM groups WHERE mediaType = ?;"
var queryStatement: OpaquePointer? var queryStatement: OpaquePointer?
var result: [(localIdentifier: String, assetSize: Double, createDate: Date, mediaType: Int, groupId: String)] = [] var result: [(localIdentifier: String, assetSize: Double, createDate: Date, mediaType: Int, groupId: String)] = []
......
...@@ -183,6 +183,9 @@ class TrashDatabase { ...@@ -183,6 +183,9 @@ class TrashDatabase {
// 根据mediaType查询数据 // 根据mediaType查询数据
func queryByMediaType(_ mediaType: Int) -> [(localIdentifier: String, assetSize: Double, createDate: Date, mediaType: Int)] { func queryByMediaType(_ mediaType: Int) -> [(localIdentifier: String, assetSize: Double, createDate: Date, mediaType: Int)] {
if PhotoManager.shared.permissionStatus != .authorized {
return []
}
let queryStatementString = "SELECT * FROM trash WHERE mediaType = ?;" let queryStatementString = "SELECT * FROM trash WHERE mediaType = ?;"
var queryStatement: OpaquePointer? var queryStatement: OpaquePointer?
var result: [(localIdentifier: String, assetSize: Double, createDate: Date, mediaType: Int)] = [] var result: [(localIdentifier: String, assetSize: Double, createDate: Date, mediaType: Int)] = []
......
...@@ -719,6 +719,25 @@ extension PhotoManager{ ...@@ -719,6 +719,25 @@ extension PhotoManager{
extension PhotoManager{ extension PhotoManager{
//调用系统删除
func deleteAssets(localIdentifiers: [String],suc:@escaping () -> ()) {
// 获取要删除的 PHAsset
let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: localIdentifiers, options: nil)
// 开始删除操作
PHPhotoLibrary.shared().performChanges({
// 创建删除请求
PHAssetChangeRequest.deleteAssets(fetchResult)
}) { success, error in
if success {
suc()
} else if let error = error {
print("删除失败: \(error.localizedDescription)")
PMLoadingHUD.share.disMiss()
}
}
}
// 处理app图片删除 // 处理app图片删除
func removeDataWhenDeleteInPage(data:[AssetModel],completionHandler: (() -> Void)? = nil){ func removeDataWhenDeleteInPage(data:[AssetModel],completionHandler: (() -> Void)? = nil){
......
...@@ -83,7 +83,7 @@ class CompressController : BaseViewController { ...@@ -83,7 +83,7 @@ class CompressController : BaseViewController {
func getViewData(){ func getViewData(){
if PhotoManager.shared.permissionStatus == .denied{ if PhotoManager.shared.permissionStatus == .denied{
loadPermissView(CGRect(x: 0, y: 200, width: ScreenW, height: 450)) loadPermissView(CGRect(x: 0, y: 300, width: ScreenW, height: 450))
return return
} }
......
...@@ -84,14 +84,14 @@ class HomeInfoViewController:BaseViewController { ...@@ -84,14 +84,14 @@ class HomeInfoViewController:BaseViewController {
let fetchs = PHAsset.fetchAssets(withLocalIdentifiers: tempStringArray, options: nil) let fetchs = PHAsset.fetchAssets(withLocalIdentifiers: tempStringArray, options: nil)
let fileSize = FileTool().calculateTotalAssetSize(fetchResult: fetchs) let fileSize = FileTool().calculateTotalAssetSize(fetchResult: fetchs)
PhotoAndVideoMananger.deleteAssets(localIdentifiers: tempStringArray) {[weak self] in PMLoadingHUD.share.show()
PhotoManager.shared.deleteAssets(localIdentifiers: tempStringArray) {[weak self] in
guard let self else {return} guard let self else {return}
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
PMLoadingHUD.share.disMiss() PMLoadingHUD.share.disMiss()
// 更新免费次数 // 更新免费次数
if isAfterAdv == false { if isAfterAdv == false {
updateFreeTimes() updateFreeTimes()
...@@ -123,6 +123,9 @@ class HomeInfoViewController:BaseViewController { ...@@ -123,6 +123,9 @@ class HomeInfoViewController:BaseViewController {
} }
} }
} }
} }
// 显示弹出框 // 显示弹出框
...@@ -483,7 +486,7 @@ class HomeInfoViewController:BaseViewController { ...@@ -483,7 +486,7 @@ class HomeInfoViewController:BaseViewController {
extension UIViewController{ extension UIViewController{
func loadPermissView(_ frame:CGRect = CGRect(x: 0, y: 100+kSafeAreaInsets.top, width: ScreenW, height: 450)){ func loadPermissView(_ frame:CGRect = CGRect(x: 0, y: 200+kSafeAreaInsets.top, width: ScreenW, height: 340)){
let permissionView = Bundle.main.loadNibNamed("PMPermissionView", owner: nil)?.last as! PMPermissionView let permissionView = Bundle.main.loadNibNamed("PMPermissionView", owner: nil)?.last as! PMPermissionView
permissionView.frame = frame permissionView.frame = frame
self.view.addSubview(permissionView) self.view.addSubview(permissionView)
......
...@@ -680,6 +680,9 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -680,6 +680,9 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: self.selectedModel.map{$0.localIdentifier}, options: nil) let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: self.selectedModel.map{$0.localIdentifier}, options: nil)
let fileSize = FileTool().calculateTotalAssetSize(fetchResult: fetchResult) let fileSize = FileTool().calculateTotalAssetSize(fetchResult: fetchResult)
PMLoadingHUD.share.show() PMLoadingHUD.share.show()
CATransaction.begin()
CATransaction.setCompletionBlock {
PHPhotoLibrary.shared().performChanges ({ PHPhotoLibrary.shared().performChanges ({
PHAssetChangeRequest.deleteAssets(fetchResult as NSFastEnumeration) PHAssetChangeRequest.deleteAssets(fetchResult as NSFastEnumeration)
}){ success, error in }){ success, error in
...@@ -704,6 +707,9 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -704,6 +707,9 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
} }
} }
} }
CATransaction.commit()
}
// 删除成功页面 // 删除成功页面
func showDeleteSuccess(fileCount:Int,fileSize:Int64){ func showDeleteSuccess(fileCount:Int,fileSize:Int64){
......
...@@ -18,12 +18,17 @@ class PMLoadingHUD{ ...@@ -18,12 +18,17 @@ class PMLoadingHUD{
return loadingView return loadingView
}() }()
func config(){
//loadingView.animationView.play()
loadingView.isHidden = false
}
func show(_ title:String = "Deleting...",_ subTitle:String = "Please wait on the screen. This might take several minutes."){ func show(_ title:String = "Deleting...",_ subTitle:String = "Please wait on the screen. This might take several minutes."){
disMiss() disMiss()
DispatchQueue.main.async { DispatchQueue.main.async {
cWindow?.addSubview(self.loadingView) cWindow?.addSubview(self.loadingView)
cWindow?.bringSubviewToFront(self.loadingView) cWindow?.bringSubviewToFront(self.loadingView)
self.loadingView.setTitleaAndSubTitle(title: title, subTitle: subTitle) self.loadingView.setTitleAndSubTitle(title: title, subTitle: subTitle)
self.loadingView.animationView.play() self.loadingView.animationView.play()
} }
} }
...@@ -33,7 +38,7 @@ class PMLoadingHUD{ ...@@ -33,7 +38,7 @@ class PMLoadingHUD{
DispatchQueue.main.async { DispatchQueue.main.async {
cWindow?.addSubview(self.loadingView) cWindow?.addSubview(self.loadingView)
cWindow?.bringSubviewToFront(self.loadingView) cWindow?.bringSubviewToFront(self.loadingView)
self.loadingView.setTitleaAndSubTitle(title: title, subTitle: subTitle) self.loadingView.setTitleAndSubTitle(title: title, subTitle: subTitle)
self.loadingView.animationView.play() self.loadingView.animationView.play()
} }
} }
...@@ -52,24 +57,29 @@ class PMLoadingHUD{ ...@@ -52,24 +57,29 @@ class PMLoadingHUD{
} }
class PMLoadingView: UIView { class PMLoadingView: UIView {
var title: UILabel!
var subtitle: UILabel!
var animationView: LottieAnimationView!
// 标记动画是否已加载
var title:UILabel! private var isAnimationLoaded = false
var subtitle:UILabel!
override init(frame: CGRect) { override init(frame: CGRect) {
super.init(frame: frame) super.init(frame: frame)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setupUI() {
self.backgroundColor = UIColor.black.withAlphaComponent(0.8) self.backgroundColor = UIColor.black.withAlphaComponent(0.8)
// 先创建空的动画视图,不加载内容
animationView = LottieAnimationView()
animationView.loopMode = .loop
addSubview(animationView) addSubview(animationView)
animationView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.centerY.equalToSuperview()
make.width.equalTo(300)
make.height.equalTo(200)
}
title = UILabel() title = UILabel()
title.text = "Deleting..." title.text = "Deleting..."
...@@ -85,37 +95,63 @@ class PMLoadingView: UIView { ...@@ -85,37 +95,63 @@ class PMLoadingView: UIView {
subtitle.font = UIFont.systemFont(ofSize: 18, weight: .semibold) subtitle.font = UIFont.systemFont(ofSize: 18, weight: .semibold)
addSubview(subtitle) addSubview(subtitle)
// 设置约束
setupConstraints()
// 异步加载动画
loadAnimationAsync()
}
private func setupConstraints() {
animationView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.centerY.equalToSuperview()
make.width.equalTo(300)
make.height.equalTo(300)
}
title.snp.makeConstraints { make in title.snp.makeConstraints { make in
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
make.top.equalTo(animationView.snp.bottom).offset(-80) make.top.equalTo(animationView.snp.bottom).offset(-80)
} }
subtitle.snp.makeConstraints { make in subtitle.snp.makeConstraints { make in
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
make.width.equalTo(250) make.width.equalTo(250)
make.top.equalTo(title.snp.bottom).offset(2) make.top.equalTo(title.snp.bottom).offset(2)
} }
} }
required init?(coder: NSCoder) { private func loadAnimationAsync() {
fatalError("init(coder:) has not been implemented") DispatchQueue.global().async { [weak self] in
} guard let self = self else { return }
// 在后台线程解析动画
let animation = LottieAnimation.named("PMAnimationLoaing")
lazy var animationView : LottieAnimationView = { DispatchQueue.main.async {
let animationView = LottieAnimationView(name: "PMAnimationLoaing") // 主线程更新 UI
animationView.loopMode = .loop self.animationView.animation = animation
return animationView self.isAnimationLoaded = true
}()
// 如果视图已经显示,则立即播放
if self.superview != nil {
self.animationView.play()
}
}
}
}
func setTitleaAndSubTitle(title:String,subTitle:String){ func setTitleAndSubTitle(title: String, subTitle: String) {
self.title.text = title self.title.text = title
self.subtitle.text = subTitle self.subtitle.text = subTitle
} }
// 重写添加到父视图的方法,在视图显示时播放动画
// override func didMoveToSuperview() {
// super.didMoveToSuperview()
// if isAnimationLoaded && superview != nil {
// animationView.play()
// }
// }
} }
...@@ -60,3 +60,4 @@ extension UIViewController { ...@@ -60,3 +60,4 @@ extension UIViewController {
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment