WallPaperHome722/WallpaperHD_Live/Home/C/WP_WallPaPerDetailsVC.swift
2024-07-23 11:43:02 +08:00

289 lines
11 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// WP_WallPaPerDetailsVC.swift
// WallpaperHD_Live
//
// Created by 16 on 2024/7/22.
//
import UIKit
import SDWebImage
import Photos
import SVProgressHUD
import Alamofire
class WP_WallPaPerDetailsVC: WP_RootVC {
@IBOutlet weak var bgView: UIView!
@IBOutlet weak var backBtn: UIButton!
@IBOutlet weak var preimageV: UIImageView!
var model = WP_4KModel()
var modeltype = WallpaperData()
let activityView = UIActivityIndicatorView()
var type:Int = 0
override func viewDidLoad() {
super.viewDidLoad()
if type == 1{
let imageURL = URL(string: model.preview ?? "")
preimageV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
}else{
let imageURL = URL(string: modeltype.source ?? "")
preimageV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
}
// UIView
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(viewTapped))
preimageV.isUserInteractionEnabled = true
preimageV.addGestureRecognizer(tapGesture)
activityView.center = CGPoint(x: self.view.center.x, y: self.view.center.y - kSafeArea_Top - 44)
//
activityView.hidesWhenStopped = true
activityView.color = .black;
activityView.style = UIActivityIndicatorView.Style.whiteLarge
self.view.addSubview(activityView)
backBtn.layer.cornerRadius = 20
if type == 1{
let model1 = WP_4KModel()
model1.preview = self.model.preview
model1.title = self.model.title
model1.thumbnail = self.model.thumbnail
model1.is_free = self.model.is_free
model1.category = self.model.category
model1.id = self.model.id
model1.cnt_like = self.model.cnt_like
HistoryManager.shared.addHistoryItem(item: model1)
}else{
let model1 = WallpaperData()
model1.original = self.modeltype.original
model1.previewThumb = self.modeltype.previewThumb
model1.source = self.modeltype.source
model1.banner = self.modeltype.banner
HistoryjpgManager.shared.addHistoryItem(item: model1)
}
}
@IBAction func saveBtn(_ sender: Any) {
self.activityView.startAnimating()
saveImageToPhotoLibrary()
DispatchQueue.global().asyncAfter(deadline: .now() + 1.5) {
DispatchQueue.main.asyncAfter(deadline: .now() + 0){
self.activityView.stopAnimating()
// self.view.makeToast("Save Success", duration: 1.5, position: .center)
// UIAlertController
let alertController = UIAlertController(title: "Successfully saved", message: "Do you need to set up a tutorial", preferredStyle: .alert)
//
alertController.addAction(UIAlertAction(title: "cancel", style: .cancel, handler: nil))
//
alertController.addAction(UIAlertAction(title: "Need", style: .default, handler: { action in
//
// print("")
// let vc = WA_TipVC()
// self.present(vc, animated: true)
}))
// present
self.present(alertController, animated: true, completion: nil)
}
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.navigationBar.isHidden = true
}
func saveImageToPhotoLibrary() {
guard let image = self.preimageV.image else {
print("找不到要保存的图片")
SVProgressHUD.showInfo(withStatus: "Can't find the picture to save")
DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
SVProgressHUD.dismiss()
}
return
}
PHPhotoLibrary.requestAuthorization { status in
switch status {
case .authorized:
self.saveImage(image: image)
case .denied, .restricted:
print("用户拒绝了访问相册权限")
SVProgressHUD.showInfo(withStatus: "Album access denied")
DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
SVProgressHUD.dismiss()
}
case .notDetermined:
print("用户尚未选择是否允许访问相册")
SVProgressHUD.showInfo(withStatus: "You have not chosen whether to allow access to the album")
DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
SVProgressHUD.dismiss()
}
@unknown default:
break
}
}
}
func saveImage(image: UIImage) {
PHPhotoLibrary.shared().performChanges({
//
PHAssetChangeRequest.creationRequestForAsset(from: image)
}) { success, error in
if success {
print("图片保存成功")
} else if let error = error {
print("图片保存失败:\(error.localizedDescription)")
SVProgressHUD.showError(withStatus: "Image saving failed:\(error.localizedDescription)")
DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
SVProgressHUD.dismiss()
}
}
}
}
@IBAction func previewBtn(_ sender: Any) {
UIView.animate(withDuration: 0.5, animations: {
self.bgView.frame.origin.y += 0
self.bgView.alpha = 0
self.backBtn.isHidden = true
})
showView()
}
//
@objc func viewTapped() {
// UIView
if bgView.frame.origin.y == UIScreen.main.bounds.height - bgView.frame.height {
// UIView
UIView.animate(withDuration: 0.5, animations: {
self.bgView.frame.origin.y += self.bgView.frame.height
self.bgView.alpha = 0
self.backBtn.isHidden = true
})
} else {
self.backBtn.isHidden = false
// UIView
UIView.animate(withDuration: 0.5, animations: {
self.bgView.frame.origin.y -= self.bgView.frame.height
self.bgView.alpha = 1
})
}
}
func showView() {
//
let previewView = Bundle.main.loadNibNamed("WA_PreView", owner: nil, options: nil)?.first as! WA_PreView
previewView.flashView.layer.cornerRadius = 25
previewView.cameraV.layer.cornerRadius = 25
previewView.touchBlock = {
self.backBtn.isHidden = false
// UIView
UIView.animate(withDuration: 0.5, animations: {
self.bgView.frame.origin.y -= 0
self.bgView.alpha = 1
})
}
view.addSubview(previewView)
//
previewView.frame.origin.x = -previewView.frame.width
//
UIView.animate(withDuration: 1.0) {
//
previewView.frame = self.view.frame
}
}
@IBAction func shareBtn(_ sender: Any) {
self.activityView.startAnimating()
//
guard let image = self.preimageV.image else {
SVProgressHUD.showInfo(withStatus: "Can't find the image to share")
DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
SVProgressHUD.dismiss()
}
print("找不到要分享的图片")
return
}
//
let items: [Any] = [image]
// UIActivityViewController
let activityViewController = UIActivityViewController(activityItems: items, applicationActivities: nil)
// UIActivityViewController
activityViewController.modalPresentationStyle = .popover
// iPad UIActivityViewController
if let popoverController = activityViewController.popoverPresentationController {
popoverController.sourceView = self.view
popoverController.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
popoverController.permittedArrowDirections = []
}
//
self.present(activityViewController, animated: true, completion: nil)
DispatchQueue.main.asyncAfter(deadline: .now() + 0){
self.activityView.stopAnimating()
}
}
@IBAction func collectBtn(_ sender: Any) {
if type == 1{
let model1 = WP_4KModel()
model1.preview = self.model.preview
model1.title = self.model.title
model1.thumbnail = self.model.thumbnail
model1.is_free = self.model.is_free
model1.category = self.model.category
model1.id = self.model.id
model1.cnt_like = self.model.cnt_like
sc4kManager.shared.addHistoryItem(item: model1)
}else{
let model1 = WallpaperData()
model1.original = self.modeltype.original
model1.previewThumb = self.modeltype.previewThumb
model1.source = self.modeltype.source
model1.banner = self.modeltype.banner
scjpgManager.shared.addHistoryItem(item: model1)
}
SVProgressHUD.showInfo(withStatus: "Collection successful")
DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
SVProgressHUD.dismiss()
}
}
@IBAction func back(_ sender: Any) {
self.navigationController?.popViewController(animated: true)
}
}