Commit b860064e authored by shenyong's avatar shenyong

Merge branch 'Advertisement' of gitlab.huolea.com:ShuMing/phonemanager into Advertisement

# Conflicts:
#	PhoneManager/Class/Session/Home/Controller/HomeInfoViewController.swift
parents 88d52922 87ebbda7
......@@ -48,6 +48,7 @@ class AdvTipDeleteView : UIView {
private var heightConstraint: Constraint?
private var centerYConstraint: Constraint?
......@@ -147,7 +148,8 @@ class AdvTipDeleteView : UIView {
self.tipView.snp.makeConstraints { make in
make.center.equalToSuperview()
make.centerX.equalToSuperview()
centerYConstraint = make.centerY.equalToSuperview().offset(self.height + 205).constraint
make.width.equalTo(345)
heightConstraint = make.height.equalTo(410).constraint
}
......@@ -187,6 +189,7 @@ class AdvTipDeleteView : UIView {
make.height.equalTo(48)
make.centerX.equalToSuperview()
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
......@@ -262,9 +265,15 @@ extension AdvTipDeleteView : UICollectionViewDataSource, UICollectionViewDelegat
self.deleteLessButton.isHidden = true
self.heightConstraint?.update(offset: 360)
}
// 强制重新布局
self.setNeedsLayout()
self.layoutIfNeeded()
// 先显示背景,然后延迟显示弹框
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
UIView.animate(withDuration: 0.1) {
// 更新约束
self.centerYConstraint?.update(offset: 0)
self.layoutIfNeeded()
}
}
}
}
......
......@@ -6,6 +6,7 @@
//
import Foundation
import SnapKit
enum TipSelectType {
case selectTypeCompressVideo
......@@ -41,7 +42,7 @@ class AdvTipSelectView : UIView {
var tipSelectModel : AdvTipSelectModel?
private var centerYConstraint: Constraint?
lazy var tipView : UIView = {
......@@ -138,9 +139,10 @@ class AdvTipSelectView : UIView {
self.tipView.snp.makeConstraints { make in
make.center.equalToSuperview()
make.centerX.equalToSuperview()
make.width.equalTo(345)
make.height.equalTo(432)
centerYConstraint = make.centerY.equalToSuperview().offset(self.height + 220).constraint
}
self.closeButton.snp.makeConstraints { make in
......@@ -180,6 +182,15 @@ class AdvTipSelectView : UIView {
make.height.equalTo(48)
make.centerX.equalToSuperview()
}
// 先显示背景,然后延迟显示弹框
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
UIView.animate(withDuration: 0.1) {
// 更新约束
self.centerYConstraint?.update(offset: 0)
self.layoutIfNeeded()
}
}
}
}
......
......@@ -20,6 +20,7 @@ class CompressSelectCell : UICollectionViewCell {
didSet{
guard let model = self.model else {return}
self.backImageView.image = UIImage()
let viewModel = CompressViewModel()
viewModel.getImageFromAssetIdentifier(identifier: model.ident) {[weak self] image in
guard let self else { return}
......@@ -27,34 +28,18 @@ class CompressSelectCell : UICollectionViewCell {
self.backImageView.image = image
}
}
// 把压缩前的值减去压缩后的值就为可以节省的值。然后这里需要判定下如果是大于1000MB,则再除以1024换算成GB
let options = PHImageRequestOptions()
options.isSynchronous = false
options.deliveryMode = .highQualityFormat
options.isNetworkAccessAllowed = true
let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: [model.ident], options: nil)
PHImageManager.default().requestImage(for: fetchResult.firstObject!, targetSize: PHImageManagerMaximumSize, contentMode:.aspectFit, options: options) { (image, _) in
if let originalImage = image {
// 项目中用到的是【0.2、0.5和0.8】,这里我们初始化的时候使用0.2去计算
if let compressedData = originalImage.jpegData(compressionQuality: 0.2) {
let compressCompletedSize = Double(compressedData.count)
let saveSize = model.orgSize - compressCompletedSize
let sizeKB : Double = saveSize/1000
DispatchQueue.main.async {
if sizeKB < 1000{
self.saveSizeLabel.text = String(format: "Save %.2f KB" ,sizeKB)
}else if sizeKB < (1000 * 1000) && sizeKB > 1000{
self.saveSizeLabel.text = String(format: "Save %.2f MB" ,sizeKB/1000)
}else{
self.saveSizeLabel.text = String(format: "Save %.2f GB" ,sizeKB/(1000 * 1000))
}
}
}
// 这里不再进行计算了 直接按照50%的去计算
let saveSize = model.orgSize/2
let sizeKB : Double = saveSize/1000
DispatchQueue.main.async {
if sizeKB < 1000{
self.saveSizeLabel.text = String(format: "Save %.2f KB" ,sizeKB)
}else if sizeKB < (1000 * 1000) && sizeKB > 1000{
self.saveSizeLabel.text = String(format: "Save %.2f MB" ,sizeKB/1000)
}else{
self.saveSizeLabel.text = String(format: "Save %.2f GB" ,sizeKB/(1000 * 1000))
}
}
}
}
......
......@@ -306,15 +306,15 @@ class CompressCompletedViewController : BaseViewController{
PHPhotoLibrary.shared().performChanges ({
PHAssetChangeRequest.deleteAssets([assetToDelete] as NSFastEnumeration)
}){ success, error in
var models :[AssetModel] = []
var count = 0
for ele in self.model! {
count = count + 1
self.updateCompressData(flag: ele.ident)
let deleteModel = AssetModel(localIdentifier: ele.ident, assetSize: ele.orgSize, createDate: ele.createDate)
models.append(deleteModel)
}
if(success){
var models :[AssetModel] = []
var count = 0
for ele in self.model! {
count = count + 1
self.updateCompressData(flag: ele.ident)
let deleteModel = AssetModel(localIdentifier: ele.ident, assetSize: ele.orgSize, createDate: ele.createDate)
models.append(deleteModel)
}
PhotoDataManager.manager.removeDataWhenDeleteInPage(data: models)
print("删除文件成功")
self.showDeleteSuccess(fileCount:count, fileSize: fileSize)
......@@ -322,7 +322,7 @@ class CompressCompletedViewController : BaseViewController{
if let error = error {
print("删除文件时出错: \(error.localizedDescription)")
}
self.jumpToCompressVC()
self.showDeleteSuccess(fileCount:count, fileSize: fileSize)
}
}
......
......@@ -6,44 +6,44 @@
//
import Foundation
import UIKit
import SnapKit
class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
var currentIndex : Int = 0
let tableData :[String] = ["Largest","Smallest","Newest","Oldest"]
class CompressSortView: UIView, UITableViewDelegate, UITableViewDataSource {
var currentIndex: Int = 0
let tableData: [String] = ["Largest", "Smallest", "Newest", "Oldest"]
var callBack : callBack<Any> = {sortType in}
private var selectedViewBottomConstraint: Constraint?
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableData.count
return tableData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell : CompressSortCell = tableView.dequeueReusableCell(withIdentifier: "CompressSortCell",for: indexPath) as! CompressSortCell
let cell: CompressSortCell = tableView.dequeueReusableCell(withIdentifier: "CompressSortCell", for: indexPath) as! CompressSortCell
cell.cellTag = indexPath.row
cell.selectButton.setTitle(tableData[indexPath.row], for: .normal)
cell.callBack = {[weak self] cellTag in
guard let self else {return}
cell.callBack = { [weak self] cellTag in
guard let self = self else { return }
self.currentIndex = cellTag as! Int
self.tableView.reloadData()
}
if indexPath.row == currentIndex {
cell.selectButton.layer.borderWidth = 1.0
cell.selectButton.setTitleColor(UIColor(red: 0, green: 0.51, blue: 1, alpha: 1), for: .normal)
}else{
} else {
cell.selectButton.layer.borderWidth = 0
cell.selectButton.setTitleColor(UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1), for: .normal)
}
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 48 * RScreenW()
}
override init(frame: CGRect) {
super.init(frame: frame)
self.addSubview(self.backView)
......@@ -58,21 +58,26 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
}
self.selectedView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.left.right.equalToSuperview()
make.height.equalTo(416)
// 初始时将 selectedView 移到屏幕下方
self.selectedViewBottomConstraint = make.bottom.equalToSuperview().offset(416).constraint
}
self.lineView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16)
make.width.equalTo(57)
make.height.equalTo(4)
make.centerX.equalToSuperview()
}
self.titleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(15)
make.right.equalToSuperview().offset(-15)
make.top.equalTo(self.lineView.snp.bottom).offset(20)
make.height.equalTo(20)
}
self.tableView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(15)
make.right.equalToSuperview().offset(-15)
......@@ -80,7 +85,6 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
make.height.equalTo(240)
}
self.applyButton.snp.makeConstraints { make in
make.left.equalToSuperview().offset(15)
make.right.equalToSuperview().offset(-15)
......@@ -88,37 +92,43 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
make.bottom.equalToSuperview().offset(-46)
}
// 先显示背景,然后延迟显示弹框
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
UIView.animate(withDuration: 0.1) {
// 更新约束
self.selectedViewBottomConstraint?.update(offset: 0)
self.layoutIfNeeded()
}
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
lazy var backView : UIView = {
lazy var backView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5000)
view.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(backViewClick))
view.addGestureRecognizer(tap)
return view
}()
lazy var selectedView : UIView = {
lazy var selectedView: UIView = {
let view = UIView()
view.backgroundColor = .white
return view
}()
lazy var lineView : UIView = {
lazy var lineView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(red: 0.85, green: 0.85, blue: 0.85, alpha: 1)
return view
}()
lazy var titleLabel : UILabel = {
lazy var titleLabel: UILabel = {
let view = UILabel()
view.text = "Sort by"
view.textAlignment = .left
......@@ -127,7 +137,7 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
return view
}()
lazy var tableView : UITableView = {
lazy var tableView: UITableView = {
let view = UITableView()
view.register(CompressSortCell.classForCoder(), forCellReuseIdentifier: "CompressSortCell")
view.backgroundColor = .clear
......@@ -142,7 +152,7 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
return view
}()
lazy var applyButton : UIButton = {
lazy var applyButton: UIButton = {
let view = UIButton(type: .custom)
view.setTitle("Apply", for: .normal)
view.layer.cornerRadius = 8
......@@ -153,14 +163,14 @@ class CompressSortView : UIView,UITableViewDelegate,UITableViewDataSource {
return view
}()
@objc func applyAction(){
@objc func applyAction() {
// 传给上层控制器,对照片进行排序
callBack(currentIndex)
// 移除自身
self.removeFromSuperview()
}
@objc func backViewClick(){
@objc func backViewClick() {
// 移除自身
self.removeFromSuperview()
}
......
......@@ -119,7 +119,6 @@ class CompressViewModel{
}
}
}
}
}
......
......@@ -116,7 +116,6 @@ class HomeInfoViewController:BaseViewController {
UserDefaults.standard.set(times, forKey: "saveAdvTimes")
}
}
}
}
}
......@@ -130,12 +129,19 @@ class HomeInfoViewController:BaseViewController {
sview.deleteCallBack = { [weak self] array in
guard let self = self else { return }
var dealArray = array
// 首先看是否订阅
if IAPManager.share.isSubscribed == false {
if array.count > Singleton.shared.maxDeleteCount {
dealArray = Array(dealArray.prefix(25))
}
// 没有订阅
let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = array
view.dataSource = dealArray
// 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes
......@@ -148,13 +154,13 @@ class HomeInfoViewController:BaseViewController {
view.getOtherInfoByType(type: self.type!)
showPopView(popView: view)
}else{
deleteOp(imgs: array ,isAfterAdv: false)
deleteOp(imgs: dealArray ,isAfterAdv: false)
}
}
}else {
// 获取次数对应的删除照片数量
var freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
let tempArray = array
let tempArray = dealArray
if freeCount > 1 {
// 如果是前两次,可以免费删除5张照片
if tempArray.count > freeDeleteCount {
......@@ -166,13 +172,13 @@ class HomeInfoViewController:BaseViewController {
view.getOtherInfoByType(type: self.type!)
showPopView(popView: view)
}else {
deleteOp(imgs: array,isAfterAdv: false)
deleteOp(imgs: dealArray,isAfterAdv: false)
}
}
}else {
// 如果小于直接删除
HomePayViewController.show {
deleteOp(imgs: array,isAfterAdv: false)
deleteOp(imgs: dealArray,isAfterAdv: false)
}
}
......@@ -189,7 +195,7 @@ class HomeInfoViewController:BaseViewController {
view.getOtherInfoByType(type: self.type!)
showPopView(popView: view)
}else {
deleteOp(imgs: array,isAfterAdv: false)
deleteOp(imgs: dealArray,isAfterAdv: false)
}
}
}else if tempArray.count > 1 && tempArray.count <= 5 {
......@@ -203,13 +209,13 @@ class HomeInfoViewController:BaseViewController {
view.getOtherInfoByType(type: self.type!)
showPopView(popView: view)
}else {
deleteOp(imgs: array ,isAfterAdv: false)
deleteOp(imgs: dealArray ,isAfterAdv: false)
}
}
}else{
// 如果只是一张,直接删除
HomePayViewController.show {
deleteOp(imgs: array ,isAfterAdv: false)
deleteOp(imgs: dealArray ,isAfterAdv: false)
}
}
}
......@@ -244,7 +250,7 @@ class HomeInfoViewController:BaseViewController {
}
}
}else {
deleteOp(imgs: array as! [AssetModel],isAfterAdv: false)
deleteOp(imgs: array ,isAfterAdv: false)
}
}
......
......@@ -178,13 +178,8 @@ class HomeInfoView :UIView{
for smodel in models {
for smodel2 in smodel.smodels ?? []{
if smodel2.isSeleted ?? false {
if selectedArray.count < Singleton.shared.maxDeleteCount {
selectedArray.append(smodel2.id!)
}else{
smodel2.isSeleted = false
}
selectedArray.append(smodel2.id!)
}
}
}
......
......@@ -54,7 +54,7 @@ class ImageCollectionCell:UICollectionViewCell {
backImageView = UIImageView()
backImageView?.isUserInteractionEnabled = true
backImageView?.contentMode = .scaleAspectFill
backImageView?.contentMode = .scaleAspectFit
backImageView?.clipsToBounds = true
backImageView?.layer.masksToBounds = true
backImageView?.isUserInteractionEnabled = true
......
......@@ -37,7 +37,7 @@ class SecretViewController: BaseViewController {
}
}
let AddAction = SecretActionView()
var AddAction = SecretActionView()
var dataSource:[String] = [] {
didSet {
......@@ -242,12 +242,14 @@ class SecretViewController: BaseViewController {
// 添加的时候需要先弹出广告
popAdverTisement()
AdvManager.shared.finisedCallBack = {
self.AddAction = SecretActionView()
self.AddAction.show();
self.AddAction.callback = { idx in
self.AddImagePicker(idx)
}
}
}else {
self.AddAction = SecretActionView()
self.AddAction.show();
self.AddAction.callback = { idx in
self.AddImagePicker(idx)
......
......@@ -6,20 +6,35 @@
//
import UIKit
import SnapKit
class SecretActionView: UIViewController {
private var selectedViewBottomConstraint: Constraint?
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .colorWithHex(hexStr: "#000000", alpha: 0.5)
setUI()
addTapAction()
}
/// 添加背景点击消失
func addTapAction(){
self.view.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(touchDismiss))
self.view.addGestureRecognizer(tap)
}
private func setUI() -> Void {
view.addSubview(backView)
backView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.bottom.equalTo(view.snp.bottom)
// 初始时将 selectedView 移到屏幕下方
self.selectedViewBottomConstraint = make.bottom.equalToSuperview().offset(1000).constraint
}
lineV.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16)
......@@ -50,6 +65,16 @@ class SecretActionView: UIViewController {
view.layoutIfNeeded()
backView.cornerCut(radius: 20, corner: [.topLeft,.topRight])
// 先显示背景,然后延迟显示弹框
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
UIView.animate(withDuration: 0.1) {
// 更新约束
self.selectedViewBottomConstraint?.update(offset: 0)
self.view.layoutIfNeeded()
}
}
}
var callback:((_ idx:Int)->Void)?
......@@ -63,6 +88,10 @@ class SecretActionView: UIViewController {
}
@objc private func touchDismiss(){
self.dismiss(animated: true)
}
func show() -> Void {
guard let rt = cWindow?.rootViewController else { return }
......
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