//
|
// UserProfileVC.swift
|
// XQMuse
|
//
|
// Created by 无故事王国 on 2024/8/20.
|
//
|
|
import UIKit
|
import QMUIKit
|
import JQTools
|
import TZImagePickerController
|
|
class UserProfileVC: BaseVC {
|
|
@IBOutlet weak var image_user: UIImageView!
|
@IBOutlet weak var tf_gender: QMUITextField!
|
@IBOutlet weak var tf_birthday: QMUITextField!
|
|
private var clipSize = CGSize(width: JQ_ScreenW, height: JQ_ScreenW) //裁剪大小
|
private var clipFrame:CGRect{
|
get{
|
if clipSize.width == 0 || clipSize.height == 0 {
|
assert(false,"未设置裁剪框大小")
|
}
|
|
var clipFrame = CGRect.zero
|
clipFrame.size = clipSize
|
clipFrame.origin = CGPoint(x: (JQ_ScreenW - clipSize.width)/2.0, y: (JQ_ScreenH - clipSize.width)/2.0)
|
return clipFrame
|
}
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = "个人资料"
|
}
|
|
override func setUI() {
|
super.setUI()
|
view.backgroundColor = UIColor(hexString:"#fafafa")
|
tf_gender.delegate = self
|
tf_birthday.delegate = self
|
image_user.isUserInteractionEnabled = true
|
let tap = UITapGestureRecognizer(target: self, action: #selector(selectUserProfile))
|
tap.numberOfTapsRequired = 1
|
image_user.addGestureRecognizer(tap)
|
}
|
|
@objc func selectUserProfile(){
|
CommonAlertSheetView.show(items: ["拍照","从相册选择"]) {[unowned self] index in
|
if index == 0{
|
|
guard UIImagePickerController.isSourceTypeAvailable(.camera) else{
|
alertError(msg: "当前设备相机不可用");return
|
}
|
|
let p = UIImagePickerController()
|
p.delegate = self
|
p.modalPresentationStyle = .fullScreen
|
p.allowsEditing = true
|
p.sourceType = .camera
|
p.cameraDevice = .front
|
self.present(p, animated: true)
|
}else{
|
let p = TZImagePickerController(maxImagesCount: 1, columnNumber: 3, delegate: self)
|
p!.modalPresentationStyle = .fullScreen
|
p!.allowTakeVideo = false
|
p!.allowTakePicture = false
|
p!.sortAscendingByModificationDate = true
|
p!.scaleAspectFillCrop = true
|
p!.allowPickingVideo = false
|
p!.maxImagesCount = 1
|
p!.allowCrop = true
|
p!.cropRect = self.clipFrame
|
self.present(p!, animated: true, completion: nil)
|
}
|
}
|
}
|
}
|
|
extension UserProfileVC:QMUITextFieldDelegate{
|
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
|
|
if textField == tf_gender{
|
let items = ["男","女","保密"]
|
CommonAlertSheetView.show(items: items) {[weak self] index in
|
guard let weakSelf = self else { return }
|
guard textField.text != items[index] else {return}
|
textField.text = items[index]
|
var gender:GenderType!
|
if index == 0{
|
gender = .man
|
}else{
|
gender = .woman
|
}
|
}
|
}
|
|
if textField == tf_birthday{
|
view.endEditing(true)
|
BitrhdayPickerView.show(title: "", type: .YMD) { date in
|
|
}
|
// CommonDatePickerView.show(before: 60, after: 0, type: .YMD) { year, month, day,_,_ in
|
// textField.text = String(format: "%ld-%02ld-%02ld", year!,month!,day!)
|
// }
|
return false
|
}
|
|
return false
|
}
|
}
|
|
extension UserProfileVC:TZImagePickerControllerDelegate{
|
public func imagePickerController(_ picker: TZImagePickerController!, didFinishPickingPhotos photos: [UIImage]!, sourceAssets assets: [Any]!, isSelectOriginalPhoto: Bool) {
|
picker.selectedAssets = NSMutableArray(array: assets)
|
}
|
|
public func imagePickerController(_ picker: TZImagePickerController!, didFinishPickingAndEditingVideo coverImage: UIImage!, outputPath: String!, error errorMsg: String!) {
|
|
}
|
}
|
|
extension UserProfileVC:UIImagePickerControllerDelegate & UINavigationControllerDelegate{
|
//成功选取
|
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
|
|
var image:UIImage?
|
image = (info[UIImagePickerController.InfoKey.originalImage] as! UIImage)
|
let corpperVC = VPImageCropperViewController(image: image!, cropFrame: clipFrame, limitScaleRatio: Int(image!.scale))
|
corpperVC.modalPresentationStyle = .fullScreen
|
DispatchQueue.main.asyncAfter(deadline: .now()+1.0) {
|
JQ_currentViewController().present(corpperVC, animated: true, completion: nil)
|
}
|
|
unowned let weakSelf = self
|
corpperVC.imageCropperHandler { (vc, image) in
|
|
} cancelClouse: {
|
corpperVC.dismiss(animated: true) {
|
|
}
|
}
|
|
|
picker.dismiss(animated: true) {
|
|
}
|
}
|
}
|