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