//
|
// UserProfileVC.swift
|
// XQMuse
|
//
|
// Created by 无故事王国 on 2024/8/20.
|
//
|
|
import UIKit
|
import QMUIKit
|
import JQTools
|
import TZImagePickerController
|
|
|
let UpdateUserProfile_Noti = Notification.Name.init("UpdateUserProfile_Noti")
|
|
class UserProfileVC: BaseVC {
|
|
@IBOutlet weak var image_user: UIImageView!
|
@IBOutlet weak var tf_nickName: QMUITextField!
|
@IBOutlet weak var tf_realName: QMUITextField!
|
@IBOutlet weak var tf_sign: QMUITextField!
|
@IBOutlet weak var tf_gender: QMUITextField!
|
@IBOutlet weak var tf_birthday: QMUITextField!
|
@IBOutlet weak var tf_degree: QMUITextField!
|
@IBOutlet weak var tf_industry: QMUITextField!
|
@IBOutlet weak var tf_company: QMUITextField!
|
@IBOutlet weak var tf_job: QMUITextField!
|
@IBOutlet weak var tf_address: QMUITextField!
|
@IBOutlet weak var tf_birthland: QMUITextField!
|
@IBOutlet weak var tf_email: QMUITextField!
|
@IBOutlet weak var image_placeholder: UIImageView!
|
|
private var userClipAvar:UIImage?
|
|
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 = "个人资料"
|
|
|
let saveBtn = UIButton(type: .custom)
|
saveBtn.setTitle("保存", for: .normal)
|
saveBtn.titleLabel?.font = .systemFont(ofSize: 15)
|
saveBtn.setTitleColor(UIColor(hexString: "#353535"), for: .normal)
|
saveBtn.addTarget(self, action: #selector(saveAction), for: .touchUpInside)
|
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: saveBtn)
|
|
// image_placeholder.isHidden = !UserViewModel.getAvatarInfo().avatar.isEmpty
|
|
if let url = URL(string: UserViewModel.getAvatarInfo().avatar){
|
image_user.sd_setImage(with: url)
|
}
|
|
tf_nickName.text = UserViewModel.getAvatarInfo().nickname
|
tf_realName.text = UserViewModel.getAvatarInfo().realname
|
tf_sign.text = UserViewModel.getAvatarInfo().signature
|
tf_gender.text = UserViewModel.getAvatarInfo().gender.rawTitle
|
tf_birthday.text = UserViewModel.getAvatarInfo().birthday
|
tf_degree.text = UserViewModel.getAvatarInfo().education
|
tf_industry.text = UserViewModel.getAvatarInfo().industry
|
tf_company.text = UserViewModel.getAvatarInfo().company
|
tf_job.text = UserViewModel.getAvatarInfo().occupation
|
tf_address.text = UserViewModel.getAvatarInfo().location
|
tf_birthland.text = UserViewModel.getAvatarInfo().hometown
|
tf_email.text = UserViewModel.getAvatarInfo().email
|
|
tf_nickName.maximumTextLength = 12
|
|
}
|
|
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 saveAction(){
|
let nickname = tf_nickName.text
|
let realname = tf_realName.text
|
let signature = tf_sign.text
|
let gender = GenderType.GenderBy(tf_gender.text!)
|
let birthday = tf_birthday.text
|
let education = tf_degree.text
|
let industry = tf_industry.text
|
let company = tf_company.text
|
let occupation = tf_job.text
|
let location = tf_address.text
|
let hometown = tf_birthland.text
|
let email = tf_email.text
|
|
Services.updateUserInfo(birthday: birthday, company: company, education: education, email: email, gender: gender, hometown: hometown, industry: industry, location: location, nickname: nickname, realname: realname, occupation: occupation, signature: signature).subscribe(onNext: {data in
|
NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil)
|
alertSuccess(msg: "修改成功")
|
}).disposed(by: disposeBag)
|
|
userClipAvar?.uploadImg().subscribe(onNext: {[weak self]imageUrl in
|
guard let weakSelf = self else { return }
|
Services.updateUserAvatar(imageUrl).subscribe(onNext: {data in
|
weakSelf.image_user.sd_setImage(with: URL(string: imageUrl.jq_urlEncoded())!)
|
weakSelf.image_placeholder.isHidden = true
|
NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil)
|
}).disposed(by: weakSelf.disposeBag)
|
}).disposed(by: disposeBag)
|
}
|
|
@objc func selectUserProfile(){
|
CommonAlertSheetView.show(items: ["从相册选择"]) {[unowned self] index in
|
if index == 0{
|
|
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)
|
|
// 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{
|
|
}
|
}
|
}
|
}
|
|
extension UserProfileVC:QMUITextFieldDelegate{
|
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
|
|
if textField == tf_gender{
|
let items = ["男","女","保密"]
|
CommonAlertSheetView.show(items: items,hiddenTitle: true) { index in
|
guard textField.text != items[index] else {return}
|
if items[index] == "保密"{
|
textField.text = ""
|
}else{
|
textField.text = items[index]
|
}
|
}
|
}
|
|
if textField == tf_birthday{
|
view.endEditing(true)
|
|
let date = tf_birthday.text?.date(withFormat: "yyyy-MM-dd") //默认回填
|
|
BitrhdayPickerView.show(title: "", type: .YMD,defaultYear: date?.year,defaultMonth: date?.month,defaultDay: date?.day) {[weak self] date in
|
self?.tf_birthday.text = date.jq_format("yyyy-MM-dd")
|
}
|
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)
|
|
if let photo = photos.first{
|
self.userClipAvar = photo.jq_scaled(to: CGSize(width: 250, height: 250))
|
// self.image_placeholder.isHidden = true
|
}
|
}
|
|
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
|
weakSelf.userClipAvar = image
|
// weakSelf.image_placeholder.isHidden = true
|
} cancelClouse: {
|
corpperVC.dismiss(animated: true) {
|
|
}
|
}
|
picker.dismiss(animated: true) {
|
|
}
|
}
|
}
|