Commit 7e28f310 authored by CZ1004's avatar CZ1004

【优化】优化首页,修复BUG

parent 3c8b6e2a
{
"images" : [
{
"filename" : "img_photo__home_defpage.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "img_photo__home_defpage@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "img_photo__home_defpage@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"filename" : "img_vedio_defpage.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "img_vedio_defpage@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "img_vedio_defpage@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
...@@ -15,21 +15,8 @@ ...@@ -15,21 +15,8 @@
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/> <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="img_star_start_2.png" translatesAutoresizingMaskIntoConstraints="NO" id="Whq-17-MfS">
<rect key="frame" x="86.333333333333329" y="305.66666666666669" width="188.33333333333337" height="188.66666666666669"/>
<constraints>
<constraint firstAttribute="width" secondItem="Whq-17-MfS" secondAttribute="height" multiplier="1:1" id="KvZ-kq-6Du"/>
</constraints>
</imageView>
</subviews>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
<color key="backgroundColor" red="0.0" green="0.50980392156862742" blue="1" alpha="1" colorSpace="calibratedRGB"/> <color key="backgroundColor" red="0.0" green="0.50980392156862742" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="Whq-17-MfS" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" constant="-26" id="eUc-AI-tgC"/>
<constraint firstItem="Whq-17-MfS" firstAttribute="width" secondItem="Ze5-6b-2t3" secondAttribute="width" multiplier="0.48" id="yGe-jC-RdK"/>
<constraint firstItem="Whq-17-MfS" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" constant="-16" id="zVN-dN-0aT"/>
</constraints>
</view> </view>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
...@@ -37,7 +24,4 @@ ...@@ -37,7 +24,4 @@
<point key="canvasLocation" x="52.671755725190835" y="374.64788732394368"/> <point key="canvasLocation" x="52.671755725190835" y="374.64788732394368"/>
</scene> </scene>
</scenes> </scenes>
<resources>
<image name="img_star_start_2.png" width="360" height="360"/>
</resources>
</document> </document>
...@@ -24,7 +24,6 @@ class HomeInfoViewController:BaseViewController { ...@@ -24,7 +24,6 @@ class HomeInfoViewController:BaseViewController {
btn.setTitleColor(UIColor.colorWithHex(hexStr: mColor), for: .normal) btn.setTitleColor(UIColor.colorWithHex(hexStr: mColor), for: .normal)
btn.setTitleColor(UIColor.colorWithHex(hexStr: black3Color), for: .selected) btn.setTitleColor(UIColor.colorWithHex(hexStr: black3Color), for: .selected)
btn.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .bold) btn.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .bold)
btn.addTarget(self, action: #selector(seletedAllBtnClick), for: .touchUpInside)
btn.layer.cornerRadius = btn.height / 2 btn.layer.cornerRadius = btn.height / 2
btn.layer.masksToBounds = true btn.layer.masksToBounds = true
...@@ -103,6 +102,8 @@ class HomeInfoViewController:BaseViewController { ...@@ -103,6 +102,8 @@ class HomeInfoViewController:BaseViewController {
UserDefaults.standard.set(times, forKey: "saveAdvTimes") UserDefaults.standard.set(times, forKey: "saveAdvTimes")
} }
} }
setDefaultPage()
} }
} }
...@@ -142,8 +143,10 @@ class HomeInfoViewController:BaseViewController { ...@@ -142,8 +143,10 @@ class HomeInfoViewController:BaseViewController {
} }
}else { }else {
// 如果小于直接删除 // 如果小于直接删除
HomePayViewController.show {
deleteOp(imgs: array as! [AssetModel],isAfterAdv: false) deleteOp(imgs: array as! [AssetModel],isAfterAdv: false)
} }
}
}else{ }else{
// 如果免费次数等于1,也就是第三次。看照片删除的数量 // 如果免费次数等于1,也就是第三次。看照片删除的数量
...@@ -169,10 +172,12 @@ class HomeInfoViewController:BaseViewController { ...@@ -169,10 +172,12 @@ class HomeInfoViewController:BaseViewController {
} }
}else{ }else{
// 如果只是一张,直接删除 // 如果只是一张,直接删除
HomePayViewController.show {
deleteOp(imgs: array as! [AssetModel],isAfterAdv: false) deleteOp(imgs: array as! [AssetModel],isAfterAdv: false)
} }
} }
} }
}
view.deleteButtonClickCallback = {[weak self] isMore,deleteCount in view.deleteButtonClickCallback = {[weak self] isMore,deleteCount in
...@@ -200,12 +205,20 @@ class HomeInfoViewController:BaseViewController { ...@@ -200,12 +205,20 @@ class HomeInfoViewController:BaseViewController {
} }
}else { }else {
deleteOp(imgs: array as! [AssetModel],isAfterAdv: false) deleteOp(imgs: array as! [AssetModel],isAfterAdv: false)
} }
} }
return sview return sview
}() }()
lazy var defaultImageView : UIImageView = {
let defaultImageView = UIImageView()
defaultImageView.image = UIImage(named: "img_photo__home_defpage")
defaultImageView.isHidden = true
return defaultImageView
}()
var ids: [[AssetModel]]? var ids: [[AssetModel]]?
var titleText : String? var titleText : String?
...@@ -243,7 +256,34 @@ class HomeInfoViewController:BaseViewController { ...@@ -243,7 +256,34 @@ class HomeInfoViewController:BaseViewController {
seletedAllBtn.centerY = navCenterY seletedAllBtn.centerY = navCenterY
titleView.addSubview(seletedAllBtn) titleView.addSubview(seletedAllBtn)
view.addSubview(tablewView) view.addSubview(tablewView)
view.addSubview(self.defaultImageView)
self.defaultImageView.snp.makeConstraints { make in
make.width.height.equalTo(180)
make.top.equalTo(292)
make.centerX.equalToSuperview()
}
setDefaultPage()
}
//设置空白页
func setDefaultPage(){
DispatchQueue.main.async {
if self.ids?.count == 0 {
if self.type == .SimilarVideos{
self.defaultImageView.image = UIImage(named: "img_vedio_defpage")
}else {
self.defaultImageView.image = UIImage(named: "img_photo__home_defpage")
}
self.defaultImageView.isHidden = false
self.seletedAllBtn.isHidden = true
}else{
self.defaultImageView.isHidden = true
self.seletedAllBtn.isHidden = false
}
}
} }
@objc func seletedAllBtnClick() { @objc func seletedAllBtnClick() {
......
...@@ -67,6 +67,13 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -67,6 +67,13 @@ class HomePhotosDetailViewController : BaseViewController {
} }
} }
lazy var defaultImageView : UIImageView = {
let defaultImageView = UIImageView()
defaultImageView.image = UIImage(named: "img_photo__home_defpage")
defaultImageView.isHidden = true
return defaultImageView
}()
lazy var collectionView:UICollectionView = { lazy var collectionView:UICollectionView = {
...@@ -126,6 +133,7 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -126,6 +133,7 @@ class HomePhotosDetailViewController : BaseViewController {
UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: { UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.collectionView.reloadData() self.collectionView.reloadData()
}, completion: nil) }, completion: nil)
if self.selectedModel.count > 0 { if self.selectedModel.count > 0 {
self.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1) self.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
...@@ -147,9 +155,35 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -147,9 +155,35 @@ class HomePhotosDetailViewController : BaseViewController {
make.height.equalTo(46) make.height.equalTo(46)
} }
self.view.addSubview(self.defaultImageView)
self.defaultImageView.snp.makeConstraints { make in
make.width.height.equalTo(180)
make.top.equalTo(292)
make.centerX.equalToSuperview()
}
setDefaultPage()
} }
//设置空白页
func setDefaultPage(){
DispatchQueue.main.async {
if self.resourceData.count == 0 {
self.defaultImageView.isHidden = false
self.currentHeaderView?.btnView.isHidden = true
self.videoDetailNavView?.seletedAllBtn.isHidden = true
self.deleteButton.isHidden = true
}else{
self.defaultImageView.isHidden = true
self.currentHeaderView?.btnView.isHidden = false
self.videoDetailNavView?.seletedAllBtn.isHidden = false
self.deleteButton.isHidden = false
}
}
}
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
view.backgroundColor = .white view.backgroundColor = .white
...@@ -411,7 +445,9 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -411,7 +445,9 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
} }
}else { }else {
// 如果小于直接删除 // 如果小于直接删除
deleteAction(count: self.selectedModel.count,isAfterAdv: false) HomePayViewController.show {
self.deleteAction(count: self.selectedModel.count,isAfterAdv: false)
}
} }
}else{ }else{
...@@ -438,7 +474,9 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -438,7 +474,9 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
} }
}else{ }else{
// 如果只是一张,直接删除 // 如果只是一张,直接删除
deleteAction(count: self.selectedModel.count,isAfterAdv: false) HomePayViewController.show {
self.deleteAction(count: self.selectedModel.count,isAfterAdv: false)
}
} }
} }
} }
...@@ -454,7 +492,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -454,7 +492,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
} }
} }
}else{ }else{
deleteAction(count: self.selectedModel.count,isAfterAdv: false) self.deleteAction(count: self.selectedModel.count,isAfterAdv: false)
} }
...@@ -527,10 +565,10 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -527,10 +565,10 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
self.deleteButton.setTitle("Delete", for: .normal) self.deleteButton.setTitle("Delete", for: .normal)
UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: { UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.collectionView.reloadData() self.collectionView.reloadSections(IndexSet(integer: 0))
}, completion: nil) }, completion: nil)
} }
setDefaultPage()
} }
......
...@@ -96,6 +96,13 @@ class HomeVideoDetailController :BaseViewController { ...@@ -96,6 +96,13 @@ class HomeVideoDetailController :BaseViewController {
return view return view
}() }()
lazy var defaultImageView : UIImageView = {
let defaultImageView = UIImageView()
defaultImageView.image = UIImage(named: "img_vedio_defpage")
defaultImageView.isHidden = true
return defaultImageView
}()
func setUI(){ func setUI(){
videoDetailNavView = VideoDetaiNavView(frame: CGRect(x: 0, y: 0, width: self.view.width, height: statusBarHeight + 44)) videoDetailNavView = VideoDetaiNavView(frame: CGRect(x: 0, y: 0, width: self.view.width, height: statusBarHeight + 44))
...@@ -139,6 +146,13 @@ class HomeVideoDetailController :BaseViewController { ...@@ -139,6 +146,13 @@ class HomeVideoDetailController :BaseViewController {
make.right.equalToSuperview().offset(-15) make.right.equalToSuperview().offset(-15)
make.height.equalTo(46) make.height.equalTo(46)
} }
self.view.addSubview(self.defaultImageView)
self.defaultImageView.snp.makeConstraints { make in
make.width.height.equalTo(180)
make.top.equalTo(292)
make.centerX.equalToSuperview()
}
setDefaultPage()
} }
...@@ -355,7 +369,9 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -355,7 +369,9 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
} }
}else { }else {
// 如果小于直接删除 // 如果小于直接删除
deleteAction(count: self.selectedModel.count,isAfterAdv: false) HomePayViewController.show {
self.deleteAction(count: self.selectedModel.count,isAfterAdv: false)
}
} }
}else{ }else{
...@@ -382,11 +398,11 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -382,11 +398,11 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
} }
}else{ }else{
// 如果只是一张,直接删除 // 如果只是一张,直接删除
deleteAction(count: self.selectedModel.count,isAfterAdv: false) HomePayViewController.show {
self.deleteAction(count: self.selectedModel.count,isAfterAdv: false)
}
} }
} }
} }
view.deleteButtonClickCallback = {isMore,deleteCount in view.deleteButtonClickCallback = {isMore,deleteCount in
if isMore == true { if isMore == true {
...@@ -400,7 +416,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -400,7 +416,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
} }
} }
}else{ }else{
deleteAction(count: self.selectedModel.count,isAfterAdv: false) self.deleteAction(count: self.selectedModel.count,isAfterAdv: false)
} }
} }
...@@ -444,6 +460,22 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -444,6 +460,22 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
} }
} }
func setDefaultPage(){
DispatchQueue.main.async {
if self.resourceData.count == 0 {
self.defaultImageView.isHidden = false
self.currentHeaderView?.btnView.isHidden = true
self.videoDetailNavView?.seletedAllBtn.isHidden = true
self.deleteButton.isHidden = true
}else{
self.defaultImageView.isHidden = true
self.currentHeaderView?.btnView.isHidden = false
self.videoDetailNavView?.seletedAllBtn.isHidden = false
self.deleteButton.isHidden = false
}
}
}
func updateCurrentPageWhenDeleteAny(){ func updateCurrentPageWhenDeleteAny(){
for item in self.selectedModel { for item in self.selectedModel {
...@@ -474,6 +506,8 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -474,6 +506,8 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
self.collectionView.reloadData() self.collectionView.reloadData()
}, completion: nil) }, completion: nil)
} }
setDefaultPage()
} }
......
...@@ -31,9 +31,28 @@ class HomeViewController:BaseViewController { ...@@ -31,9 +31,28 @@ class HomeViewController:BaseViewController {
case 1: case 1:
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
guard let self else {return} guard let self else {return}
// 这里需要看下是否需要PIN验证
let pass = UserDefaults.standard.object(forKey: SecretViewController.psKey) as? String ?? ""
if pass.count > 2{
let set = SecretSetViewController()
set.secretType = .verify
set.modalPresentationStyle = .fullScreen
self.present(set, animated: true)
set.Callback = {[weak self] su in
guard let self else {return}
set.dismiss(animated: true)
let vc:SecretViewController = SecretViewController() let vc:SecretViewController = SecretViewController()
self.navigationController?.pushViewController(vc, animated: true) self.navigationController?.pushViewController(vc, animated: true)
} }
}else {
let vc:SecretViewController = SecretViewController()
self.navigationController?.pushViewController(vc, animated: true)
}
//
// let vc:SecretViewController = SecretViewController()
// self.navigationController?.pushViewController(vc, animated: true)
}
case 2 : case 2 :
DispatchQueue.main.async {[weak self] in DispatchQueue.main.async {[weak self] in
guard let self else {return} guard let self else {return}
...@@ -47,6 +66,8 @@ class HomeViewController:BaseViewController { ...@@ -47,6 +66,8 @@ class HomeViewController:BaseViewController {
} }
lazy var imageView : UIImageView = { lazy var imageView : UIImageView = {
let imageView = UIImageView() let imageView = UIImageView()
imageView.image = UIImage(named: "img_bj_home") imageView.image = UIImage(named: "img_bj_home")
...@@ -191,6 +212,10 @@ class HomeViewController:BaseViewController { ...@@ -191,6 +212,10 @@ class HomeViewController:BaseViewController {
} }
}) })
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 总数据 文件数量和文件大小 // 总数据 文件数量和文件大小
PhotoAndVideoMananger.mananger.fetchAllFile {[weak self] index, FileSize in PhotoAndVideoMananger.mananger.fetchAllFile {[weak self] index, FileSize in
...@@ -210,23 +235,31 @@ class HomeViewController:BaseViewController { ...@@ -210,23 +235,31 @@ class HomeViewController:BaseViewController {
} }
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 可能是删除数据,重新获取下 // 可能是删除数据,重新获取下
PhotoDataManager.manager.loadFromFileSystem(resultModel: {[weak self] model in PhotoDataManager.manager.loadFromFileSystem(resultModel: {[weak self] model in
DispatchQueue.main.async { DispatchQueue.main.async {
self?.homeView?.model = model self?.homeView?.model = model
if let collectionView = self?.homeView?.collectionView { if let collectionView = self?.homeView?.collectionView {
UIView.transition(with: collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: {
collectionView.reloadData() for section in 0..<collectionView.numberOfSections {
for item in 0..<collectionView.numberOfItems(inSection: section) {
if section == 0 || section == 1 {
if let cell = collectionView.cellForItem(at: IndexPath(row: item, section: section)) as? HomeTitleCollectionCell {
UIView.transition(with: cell.collectionView!, duration: 0.3, options: .transitionCrossDissolve, animations: {
cell.collectionView?.reloadData()
}, completion: nil) }, completion: nil)
} }
}else{
UIView.transition(with:collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: {
self?.homeView?.collectionView.reloadItems(at: [IndexPath(row: item, section: section)])
}, completion: nil)
}
}
}
}
} }
}) })
} }
override func viewDidAppear(_ animated: Bool) { override func viewDidAppear(_ animated: Bool) {
......
...@@ -155,13 +155,21 @@ class HomeInfoView :UIView{ ...@@ -155,13 +155,21 @@ class HomeInfoView :UIView{
smodel2.isSeleted = isSeleted smodel2.isSeleted = isSeleted
} }
} }
} }
tableView.reloadSections(IndexSet(integer: 0), with: .automatic) // 设置头部的统计数量
setTitleView() setTitleView()
for section in 0..<self.tableView.numberOfSections {
for item in 0..<self.tableView.numberOfRows(inSection: section) {
if let cell = self.tableView.cellForRow(at: IndexPath(row: item, section: section)) as? HomeInfoTableViewCell {
UIView.transition(with: cell.collectionView!, duration: 0.3, options: .transitionCrossDissolve, animations: {
cell.collectionView?.reloadData()
}, completion: nil)
}
}
}
} }
func getSelectedArray() -> [AssetModel] { func getSelectedArray() -> [AssetModel] {
......
...@@ -28,20 +28,7 @@ class HomeView:UIView { ...@@ -28,20 +28,7 @@ class HomeView:UIView {
var otherItemCallBack : (HomePhotosModel,Int)->Void = {data,otherCellRow in} var otherItemCallBack : (HomePhotosModel,Int)->Void = {data,otherCellRow in}
var model:PhotosManagerModel? { var model:PhotosManagerModel?
didSet {
guard model != nil else {return}
DispatchQueue.main.async {[weak self] in
guard let self else {return}
// self.collectionView.reloadData()
}
}
}
lazy var collectionView:UICollectionView = { lazy var collectionView:UICollectionView = {
...@@ -73,8 +60,6 @@ class HomeView:UIView { ...@@ -73,8 +60,6 @@ class HomeView:UIView {
super.init(frame: frame) super.init(frame: frame)
setData()
setupUI() setupUI()
} }
...@@ -82,30 +67,6 @@ class HomeView:UIView { ...@@ -82,30 +67,6 @@ class HomeView:UIView {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
} }
func reload(type:PhotsFileType) {
var indexPath : IndexPath
if type == .duplicates {
indexPath = IndexPath(row: 0, section: 0)
}else if type == .similar{
indexPath = IndexPath(row: 1, section: 0)
}else if type == .videos{
indexPath = IndexPath(row: 0, section: 1)
}
DispatchQueue.main.async {[weak self] in
guard let self else {return}
self.collectionView.reloadData()
}
}
func setTitle() { func setTitle() {
DispatchQueue.main.async {[weak self] in DispatchQueue.main.async {[weak self] in
...@@ -117,39 +78,6 @@ class HomeView:UIView { ...@@ -117,39 +78,6 @@ class HomeView:UIView {
} }
func refreshData(model:PhotosManagerModel) {
if self.model == nil {
DispatchQueue.main.async {[weak self] in
guard let self else {return}
self.homeHeader?.setFileAndCount(count: model.allFileNumber, fileSize: model.allFileSize)
self.collectionView.reloadData()
}
}else {
DispatchQueue.main.async {[weak self] in
guard let self else {return}
self.homeHeader?.setFileAndCount(count: model.allFileNumber, fileSize: model.allFileSize)
self.collectionView.reloadData()
}
}
self.model = model
}
func setData() {
}
private func setupUI() { private func setupUI() {
backgroundColor = .clear backgroundColor = .clear
...@@ -198,9 +126,6 @@ class HomeView:UIView { ...@@ -198,9 +126,6 @@ class HomeView:UIView {
make.width.equalToSuperview().offset(-2 * marginLR) make.width.equalToSuperview().offset(-2 * marginLR)
make.bottom.equalToSuperview().offset( -homeTabbarView!.height - 16) make.bottom.equalToSuperview().offset( -homeTabbarView!.height - 16)
} }
// collectionView.contentInset = UIEdgeInsets(top: homeTabbarView!.height + 49, left: 0, bottom: homeTabbarView!.height + 16, right: 0)
} }
func etCell(indexPath: IndexPath) -> UICollectionViewCell { func etCell(indexPath: IndexPath) -> UICollectionViewCell {
...@@ -255,6 +180,13 @@ extension HomeView:WaterfallMutiSectionDelegate,UICollectionViewDataSource,UICol ...@@ -255,6 +180,13 @@ extension HomeView:WaterfallMutiSectionDelegate,UICollectionViewDataSource,UICol
}else{ }else{
self.similarHeadCell = cell self.similarHeadCell = cell
} }
if cell.model?.assets.count ?? 0 > 0 {
cell.fileLabel?.isHidden = false
}else{
cell.fileLabel?.isHidden = true
}
return cell return cell
case 1: case 1:
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: HomeOtherCollectionCell.identifier, for: indexPath) as! HomeOtherCollectionCell let cell = collectionView.dequeueReusableCell(withReuseIdentifier: HomeOtherCollectionCell.identifier, for: indexPath) as! HomeOtherCollectionCell
...@@ -279,7 +211,14 @@ extension HomeView:WaterfallMutiSectionDelegate,UICollectionViewDataSource,UICol ...@@ -279,7 +211,14 @@ extension HomeView:WaterfallMutiSectionDelegate,UICollectionViewDataSource,UICol
let model = model?.titleModelArray[indexPath.row] let model = model?.titleModelArray[indexPath.row]
if model?.assets.count ?? 0 > 0 {
return (model?.assets.first?.count ?? 0) > 2 ? ((collection.width - marginLR - 20) / 2.5) + 64 : ((collection.width - 2 * marginLR - 10) / 2) + 64 return (model?.assets.first?.count ?? 0) > 2 ? ((collection.width - marginLR - 20) / 2.5) + 64 : ((collection.width - 2 * marginLR - 10) / 2) + 64
}else{
return 52
}
}else { }else {
let model = model?.otherModelArray[indexPath.row] let model = model?.otherModelArray[indexPath.row]
......
...@@ -14,7 +14,7 @@ class HomeInfoTableViewCell:UITableViewCell { ...@@ -14,7 +14,7 @@ class HomeInfoTableViewCell:UITableViewCell {
private var backView:UIView? private var backView:UIView?
private var collectionView: UICollectionView? var collectionView: UICollectionView?
private var numberLabel:UILabel? private var numberLabel:UILabel?
...@@ -112,8 +112,10 @@ class HomeInfoTableViewCell:UITableViewCell { ...@@ -112,8 +112,10 @@ class HomeInfoTableViewCell:UITableViewCell {
collectionView?.x = (backView?.x ?? 0) + marginLR collectionView?.x = (backView?.x ?? 0) + marginLR
collectionView?.y = (backView?.y ?? 0) + (backView?.height ?? 0) - (collectionView?.height ?? 0) - 16 collectionView?.y = (backView?.y ?? 0) + (backView?.height ?? 0) - (collectionView?.height ?? 0) - 16
self.collectionView?.reloadData()
UIView.transition(with: collectionView!, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.collectionView?.reloadData()
}, completion: nil)
} }
} }
......
...@@ -27,7 +27,7 @@ class HomeVideoDetailCell : UICollectionViewCell { ...@@ -27,7 +27,7 @@ class HomeVideoDetailCell : UICollectionViewCell {
// 允许从iCloud请求 // 允许从iCloud请求
options.isNetworkAccessAllowed = true options.isNetworkAccessAllowed = true
// 异步请求 // 异步请求
options.isSynchronous = true options.isSynchronous = false
// 从 PHAsset 获取 AVAsset // 从 PHAsset 获取 AVAsset
if let videoAsset = PhotoAndVideoMananger.mananger.getPHAsssetwithID(ids: [resourceIdent!.localIdentifier]){ if let videoAsset = PhotoAndVideoMananger.mananger.getPHAsssetwithID(ids: [resourceIdent!.localIdentifier]){
// 使用requestImageForAsset方法请求视频的第一帧图片 // 使用requestImageForAsset方法请求视频的第一帧图片
......
...@@ -33,13 +33,14 @@ class LauchVC:UIViewController { ...@@ -33,13 +33,14 @@ class LauchVC:UIViewController {
backView.addSubview(LaunchingLoop) backView.addSubview(LaunchingLoop)
LaunchingView.snp.makeConstraints { make in LaunchingView.snp.makeConstraints { make in
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
make.centerY.equalToSuperview().offset(-80) make.centerY.equalToSuperview().offset(-140 * RScreenH())
make.width.equalToSuperview().offset(-20) make.width.equalToSuperview()
make.height.equalTo(LaunchingView.snp.width).multipliedBy(276/504.0) make.height.equalTo(LaunchingView.snp.width)
} }
LaunchingLoop.snp.makeConstraints { make in LaunchingLoop.snp.makeConstraints { make in
make.left.right.equalToSuperview() make.centerX.equalToSuperview()
make.centerY.equalToSuperview().offset(80) make.width.height.equalTo(200)
make.bottom.equalToSuperview().offset(-60 * RScreenH())
} }
DispatchQueue.main.asyncAfter(deadline: .now() + 3, execute: { DispatchQueue.main.asyncAfter(deadline: .now() + 3, execute: {
var vc:UIViewController? var vc:UIViewController?
......
...@@ -29,6 +29,11 @@ class SecretSetViewController: BaseViewController, UITextFieldDelegate { ...@@ -29,6 +29,11 @@ class SecretSetViewController: BaseViewController, UITextFieldDelegate {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
self.titleView.backBtn.setImage(UIImage(named: "ic_close_charging"), for: .normal)
self.titleView.model.isBackBtnShow = true
titleView.model.title = "Secret Library" titleView.model.title = "Secret Library"
titleView.titleLabel.textColor = .black titleView.titleLabel.textColor = .black
titleView.titleLabel.textAlignment = .left titleView.titleLabel.textAlignment = .left
...@@ -40,7 +45,7 @@ class SecretSetViewController: BaseViewController, UITextFieldDelegate { ...@@ -40,7 +45,7 @@ class SecretSetViewController: BaseViewController, UITextFieldDelegate {
override func close(animation: Bool = true) { override func close(animation: Bool = true) {
if secretType == .verify { if secretType == .verify {
self.navigationController?.popToRootViewController(animated: true) self.dismiss(animated: true)
return return
} }
Callback(false) Callback(false)
...@@ -63,6 +68,11 @@ class SecretSetViewController: BaseViewController, UITextFieldDelegate { ...@@ -63,6 +68,11 @@ class SecretSetViewController: BaseViewController, UITextFieldDelegate {
}else{ }else{
if secretType == .del { if secretType == .del {
UserDefaults.standard.set("", forKey: SecretViewController.psKey) UserDefaults.standard.set("", forKey: SecretViewController.psKey)
let alert = UIAlertController(title: nil, message: "The PIN has been deleted", preferredStyle: .alert)
self.present(alert, animated: true)
DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
alert.dismiss(animated: true)
}
} }
} }
}else{ }else{
...@@ -78,7 +88,7 @@ class SecretSetViewController: BaseViewController, UITextFieldDelegate { ...@@ -78,7 +88,7 @@ class SecretSetViewController: BaseViewController, UITextFieldDelegate {
DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) { DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
alert.dismiss(animated: true) { alert.dismiss(animated: true) {
self.Callback(true) self.Callback(true)
self.navigationController?.popViewController(animated: true) self.dismiss(animated: true)
} }
} }
} }
...@@ -90,8 +100,16 @@ class SecretSetViewController: BaseViewController, UITextFieldDelegate { ...@@ -90,8 +100,16 @@ class SecretSetViewController: BaseViewController, UITextFieldDelegate {
} }
return return
} }
Callback(true) UserDefaults.standard.set("", forKey: SecretViewController.psKey)
self.navigationController?.popViewController(animated: true) let alert = UIAlertController(title: nil, message: "Unlocked", preferredStyle: .alert)
self.present(alert, animated: true)
DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
alert.dismiss(animated: true){
self.Callback(true)
self.dismiss(animated: true)
}
}
} }
} }
} }
......
...@@ -22,7 +22,7 @@ class SecretViewController: BaseViewController { ...@@ -22,7 +22,7 @@ class SecretViewController: BaseViewController {
/** 首次显示 */ /** 首次显示 */
private var isShow:Bool { private var isShow:Bool {
get { get {
guard let show = UserDefaults.standard.object(forKey: "SecretFirstShow") else { guard UserDefaults.standard.object(forKey: "SecretFirstShow") != nil else {
UserDefaults.standard.set("1", forKey: "SecretFirstShow") UserDefaults.standard.set("1", forKey: "SecretFirstShow")
return false return false
} }
...@@ -54,16 +54,17 @@ class SecretViewController: BaseViewController { ...@@ -54,16 +54,17 @@ class SecretViewController: BaseViewController {
super.viewDidLoad() super.viewDidLoad()
_ = Resource.isDirect() _ = Resource.isDirect()
if isShow { if isShow {
if pass.count > 2 { // if pass.count > 2 {
let set = SecretSetViewController() // let set = SecretSetViewController()
set.secretType = .verify // set.secretType = .verify
set.Callback = {[weak self] su in // set.Callback = {[weak self] su in
self?.ShowUI() // self?.ShowUI()
} // }
self.navigationController?.pushViewController(set, animated: true) // self.navigationController?.pushViewController(set, animated: true)
}else{ // }else{
// self.ShowUI()
// }
self.ShowUI() self.ShowUI()
}
}else{ }else{
let alert = SecretAlert() let alert = SecretAlert()
titleView.isHidden = true titleView.isHidden = true
...@@ -73,9 +74,12 @@ class SecretViewController: BaseViewController { ...@@ -73,9 +74,12 @@ class SecretViewController: BaseViewController {
let set = SecretSetViewController() let set = SecretSetViewController()
set.secretType = .create set.secretType = .create
set.Callback = { su in set.Callback = { su in
set.dismiss(animated: true)
self?.ShowUI() self?.ShowUI()
} }
self?.navigationController?.pushViewController(set, animated: true) set.modalPresentationStyle = .fullScreen
self?.present(set, animated: true)
// self?.navigationController?.pushViewController(set, animated: true)
}else{ }else{
self?.ShowUI() self?.ShowUI()
} }
...@@ -135,14 +139,22 @@ class SecretViewController: BaseViewController { ...@@ -135,14 +139,22 @@ class SecretViewController: BaseViewController {
if pass.count > 2 { if pass.count > 2 {
let set = SecretSetViewController() let set = SecretSetViewController()
set.secretType = .del set.secretType = .del
self.navigationController?.pushViewController(set, animated: true) // self.navigationController?.pushViewController(set, animated: true)
set.Callback = { cr in
set.dismiss(animated: true)
}
set.modalPresentationStyle = .fullScreen
self.present(set, animated: true)
}else{ }else{
let set = SecretSetViewController() let set = SecretSetViewController()
set.secretType = .create set.secretType = .create
set.Callback = { cr in set.Callback = { cr in
set.dismiss(animated: true)
} }
self.navigationController?.pushViewController(set, animated: true) // self.navigationController?.pushViewController(set, animated: true)
set.modalPresentationStyle = .fullScreen
self.present(set, animated: true)
} }
} }
......
...@@ -321,6 +321,7 @@ class PhotoAndVideoMananger { ...@@ -321,6 +321,7 @@ class PhotoAndVideoMananger {
let targetSize = CGSize(width: 400, height: 400) let targetSize = CGSize(width: 400, height: 400)
let options = PHImageRequestOptions() let options = PHImageRequestOptions()
options.isSynchronous = true options.isSynchronous = true
options.deliveryMode = .opportunistic
options.isNetworkAccessAllowed = true options.isNetworkAccessAllowed = true
imageManager.requestImage(for: asset, targetSize: targetSize, contentMode: .aspectFill, options: options) { result, _ in imageManager.requestImage(for: asset, targetSize: targetSize, contentMode: .aspectFill, options: options) { result, _ in
image = result image = result
...@@ -829,7 +830,7 @@ class PhotoAndVideoMananger { ...@@ -829,7 +830,7 @@ class PhotoAndVideoMananger {
} }
var finalData : [[AssetModel]] = [] var finalData : [[AssetModel]] = []
// 按照大小排序下 // 按照大小排序下
data = data.sorted{ $0.assetSize < $1.assetSize } data = data.sorted{ $0.assetSize > $1.assetSize }
finalData.append(data) finalData.append(data)
completionHandler(finalData) completionHandler(finalData)
} }
...@@ -847,6 +848,8 @@ class PhotoAndVideoMananger { ...@@ -847,6 +848,8 @@ class PhotoAndVideoMananger {
data.append(AssetModel(localIdentifier: item.localIdentifier, assetSize: self.findAssetSize(asset: item), createDate: item.creationDate!)) data.append(AssetModel(localIdentifier: item.localIdentifier, assetSize: self.findAssetSize(asset: item), createDate: item.creationDate!))
} }
var finalData : [[AssetModel]] = [] var finalData : [[AssetModel]] = []
// 排序,从大到小
data = data.sorted{ $0.assetSize > $1.assetSize }
finalData.append(data) finalData.append(data)
completionHandler(finalData) completionHandler(finalData)
} }
...@@ -855,7 +858,7 @@ class PhotoAndVideoMananger { ...@@ -855,7 +858,7 @@ class PhotoAndVideoMananger {
// MARK: - 处理截图数据------------------------------------------------------- // MARK: - 处理截图数据-------------------------------------------------------
// MARK: - 处理照片数据------------------------------------------------------- // MARK: - 处理照片数据------------------------- ------------------------------
func dealImageAssetData(completionHandler:@escaping ([[AssetModel]])->Void){ func dealImageAssetData(completionHandler:@escaping ([[AssetModel]])->Void){
DispatchQueue.global().async { DispatchQueue.global().async {
var data:[AssetModel] = [] var data:[AssetModel] = []
...@@ -863,6 +866,8 @@ class PhotoAndVideoMananger { ...@@ -863,6 +866,8 @@ class PhotoAndVideoMananger {
data.append(AssetModel(localIdentifier: item.localIdentifier, assetSize: self.findAssetSize(asset: item), createDate: item.creationDate!)) data.append(AssetModel(localIdentifier: item.localIdentifier, assetSize: self.findAssetSize(asset: item), createDate: item.creationDate!))
} }
var finalData : [[AssetModel]] = [] var finalData : [[AssetModel]] = []
// 排序,从大到小
data = data.sorted{ $0.assetSize > $1.assetSize }
finalData.append(data) finalData.append(data)
completionHandler(finalData) completionHandler(finalData)
} }
...@@ -886,7 +891,7 @@ class PhotoAndVideoMananger { ...@@ -886,7 +891,7 @@ class PhotoAndVideoMananger {
// 允许从iCloud请求 // 允许从iCloud请求
options.isNetworkAccessAllowed = true options.isNetworkAccessAllowed = true
// 异步请求 // 异步请求
options.isSynchronous = true options.isSynchronous = false
// 从 PHAsset 获取 AVAsset // 从 PHAsset 获取 AVAsset
if let videoAsset = PhotoAndVideoMananger.mananger.getPHAsssetwithID(ids: [ident.localIdentifier]){ if let videoAsset = PhotoAndVideoMananger.mananger.getPHAsssetwithID(ids: [ident.localIdentifier]){
// 使用requestImageForAsset方法请求视频的第一帧图片 // 使用requestImageForAsset方法请求视频的第一帧图片
...@@ -919,7 +924,7 @@ class PhotoAndVideoMananger { ...@@ -919,7 +924,7 @@ class PhotoAndVideoMananger {
semaphore.signal() semaphore.signal()
} }
if let data = imageData { if let data = imageData {
let hash = Insecure.MD5.hash(data: data) let hash = SHA256.hash(data: data)
hashString = hash.compactMap { String(format: "%02x", $0) }.joined() hashString = hash.compactMap { String(format: "%02x", $0) }.joined()
} }
} }
......
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