From 0fb7413df54760ac6bd15b90b738e0706de1629e Mon Sep 17 00:00:00 2001 From: 杨锴 <841720330@qq.com> Date: 星期二, 05 十一月 2024 19:03:09 +0800 Subject: [PATCH] fix bug --- XQMuse/Root/Me/VC/UserProfileVC.swift | 345 ++++++++++++++++++++++++++++----------------------------- 1 files changed, 169 insertions(+), 176 deletions(-) diff --git a/XQMuse/Root/Me/VC/UserProfileVC.swift b/XQMuse/Root/Me/VC/UserProfileVC.swift index d323209..eb95c22 100644 --- a/XQMuse/Root/Me/VC/UserProfileVC.swift +++ b/XQMuse/Root/Me/VC/UserProfileVC.swift @@ -15,217 +15,210 @@ 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_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 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 - } - } + private var userClipAvar:UIImage? - override func viewDidLoad() { - super.viewDidLoad() - title = "个人资料" + private var clipSize = CGSize(width: JQ_ScreenW, height: JQ_ScreenW) //裁剪大小 + private var clipFrame:CGRect{ + get{ + if clipSize.width == 0 || clipSize.height == 0 { + assert(false,"未设置裁剪框大小") + } - image_placeholder.isHidden = !UserViewModel.getAvatarInfo().avatar.isEmpty + 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.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 - yy_popBlock = {[weak self] in + 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 } - let nickname = weakSelf.tf_nickName.text - let realname = weakSelf.tf_realName.text - let signature = weakSelf.tf_sign.text - let gender = GenderType.GenderBy(weakSelf.tf_gender.text!) - let birthday = weakSelf.tf_birthday.text - let education = weakSelf.tf_degree.text - let industry = weakSelf.tf_industry.text - let company = weakSelf.tf_company.text - let occupation = weakSelf.tf_job.text - let location = weakSelf.tf_address.text - let hometown = weakSelf.tf_birthland.text - let email = weakSelf.tf_email.text + 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) + } - if nickname != UserViewModel.getAvatarInfo().nickname - || realname != UserViewModel.getAvatarInfo().realname - || signature != UserViewModel.getAvatarInfo().signature - || gender != UserViewModel.getAvatarInfo().gender - || birthday != UserViewModel.getAvatarInfo().birthday - || education != UserViewModel.getAvatarInfo().education - || industry != UserViewModel.getAvatarInfo().industry - || company != UserViewModel.getAvatarInfo().company - || occupation != UserViewModel.getAvatarInfo().occupation - || location != UserViewModel.getAvatarInfo().location - || hometown != UserViewModel.getAvatarInfo().hometown - || email != UserViewModel.getAvatarInfo().email{ + @objc func selectUserProfile(){ + CommonAlertSheetView.show(items: ["从相册选择"]) {[unowned self] index in + if index == 0{ - CommonAlertView.show(title: "提示", content: "是否保存修改?",cancelStr: "不保存",completeStr: "保存") { state in - if state{ - 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) - weakSelf.navigationController?.popViewController(animated: true) - }).disposed(by: weakSelf.disposeBag) - }else{ - weakSelf.navigationController?.popViewController(animated: true) - } - } + 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{ - weakSelf.navigationController?.popViewController(animated: true) + } } - } - - 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 { + func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { - if textField == tf_gender{ - let items = ["男","女","保密"] - CommonAlertSheetView.show(items: items) { index in - guard textField.text != items[index] else {return} - textField.text = items[index] - } - } + 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) - BitrhdayPickerView.show(title: "", type: .YMD) {[weak self] date in + if textField == tf_birthday{ + view.endEditing(true) + BitrhdayPickerView.show(title: "", type: .YMD) {[weak self] date in self?.tf_birthday.text = date.jq_format("yyyy-MM-dd") - } - return false - } - - return false - } + } + 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!, didFinishPickingPhotos photos: [UIImage]!, sourceAssets assets: [Any]!, isSelectOriginalPhoto: Bool) { + picker.selectedAssets = NSMutableArray(array: assets) if let photo = photos.first{ - photo.jq_scaled(to: CGSize(width: 250, height: 250)).uploadImg().subscribe(onNext: {[weak self]imageUrl in - guard let weakSelf = self else { return } - Services.updateUserAvatar(imageUrl).subscribe(onNext: {data in - weakSelf.image_placeholder.isHidden = true - weakSelf.image_user.sd_setImage(with: URL(string: imageUrl)!) - NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil) - }).disposed(by: weakSelf.disposeBag) - }).disposed(by: disposeBag) + 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!) { + 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]) { + //成功选取 + 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) - } + 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 - image.uploadImg().subscribe(onNext: {imageUrl in - Services.updateUserAvatar(imageUrl).subscribe(onNext: {data in - weakSelf.image_user.sd_setImage(with: URL(string: imageUrl)!) - weakSelf.image_placeholder.isHidden = true - NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil) - }).disposed(by: weakSelf.disposeBag) - }).disposed(by: weakSelf.disposeBag) - } cancelClouse: { - corpperVC.dismiss(animated: true) { + 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) { + } + } + picker.dismiss(animated: true) { - } - } + } + } } -- Gitblit v1.7.1