//
|
// MineInfoVC.swift
|
// OKProject
|
//
|
// Created by alvin_y on 2020/6/13.
|
// Copyright © 2020 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
|
/// 个人信息
|
class MineInfoVC: YYViewController {
|
|
/// 生日
|
@IBOutlet weak var textField_birthday: YYTextField!
|
|
/// 性别
|
@IBOutlet weak var textField_sex: YYTextField!
|
|
/// 昵称
|
@IBOutlet weak var textField_name: YYTextField!
|
|
/// 头像
|
@IBOutlet weak var image_avatar: UIImageView!
|
|
/// viewModel
|
let viewModel = MineInfoViewModel()
|
|
/// 老的头像
|
private var oldImage: UIImage?
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
|
// Do any additional setup after loading the view.
|
}
|
|
override func viewWillAppear(_ animated: Bool) {
|
super.viewWillAppear(animated)
|
image_avatar.avatar(url: app.userInfo.avatar)
|
textField_name.text = app.userInfo.nickName
|
textField_sex.text = app.userInfo.sexFormat
|
textField_birthday.text = app.userInfo.birthday
|
}
|
|
//MARK: - UI
|
override func setupViews() {
|
super.setupViews()
|
navigationItem.title = "个人信息"
|
textField_name.delegate = self
|
textField_sex.delegate = self
|
textField_birthday.delegate = self
|
image_avatar.isUserInteractionEnabled = true
|
image_avatar.addGestureRecognizer(UITapGestureRecognizer.init(target: self, action: #selector(openPhoto)))
|
}
|
|
|
|
/// 打开相册相机
|
@objc func openPhoto(){
|
MineInfoView.instance(data: ["相册","拍照"]).show { (row) in
|
if row == 0{
|
openSystemPhoto(from: self, type: .photoLibrary, delegate: self)
|
}else{
|
openSystemPhoto(from: self, type: .camera, delegate: self)
|
}
|
}
|
}
|
|
/// 上传头像
|
func uploadAvatar() {
|
guard let image = self.image_avatar.image else{return}
|
YYAliyunOSSManager.shared.uploadImage(key: "avatar\(Date().timeStamp())", image: image).subscribe(onNext: {[unowned self] (url) in
|
self.viewModel.avatar.accept(url)
|
self.viewModel.updateInfo()
|
}, onError: {[unowned self] (error) in
|
guard let image = self.oldImage else {return}
|
self.image_avatar.image = image
|
}).disposed(by: disposeBag)
|
}
|
|
//MARK: - Rx
|
override func bindRx() {
|
super.bindRx()
|
|
viewModel.updateInfoSubject
|
.subscribe(onNext: {[unowned self] (status) in
|
switch status{
|
case .loading:
|
self.show()
|
break
|
case .success(_):
|
self.hide()
|
break
|
case .error(let error):
|
self.hide()
|
alert(text: error.localizedDescription)
|
break
|
}
|
}).disposed(by: rx.disposeBag)
|
|
viewModel.requestSubject
|
.subscribe(onNext: { (status) in
|
switch status{
|
case .loading:
|
break
|
case .success(let model):
|
guard let data = model as? UserInfoModel else{return}
|
self.image_avatar.avatar(url: data.avatar)
|
self.textField_name.text = data.nickName
|
self.textField_sex.text = data.sexFormat
|
self.textField_birthday.text = data.birthday
|
break
|
case .error(let error):
|
alert(text: error.localizedDescription)
|
break
|
}
|
}).disposed(by: rx.disposeBag)
|
}
|
}
|
|
// MARK: - UITextFieldDelegate
|
extension MineInfoVC: UITextFieldDelegate
|
{
|
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
|
if textField_sex == textField{
|
MineInfoView.instance(data: ["男","女"]).show { (row) in
|
self.viewModel.sex.accept(row + 1)
|
self.viewModel.updateInfo()
|
}
|
return false
|
}else if textField_birthday == textField{
|
MineBirthdayView.instance().show { (birthday) in
|
self.viewModel.birthday.accept(birthday)
|
self.viewModel.updateInfo()
|
}
|
return false
|
}else if textField_name == textField{
|
let vc = MineModifyNicknameVC()
|
self.yy_push(vc: vc)
|
return false
|
}
|
return false
|
}
|
}
|
|
// MARK: - UINavigationControllerDelegate,UIImagePickerControllerDelegate
|
extension MineInfoVC: UINavigationControllerDelegate,UIImagePickerControllerDelegate{
|
//拍照或选取照片完成
|
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
|
self.dismiss(animated: true)
|
let image = info[UIImagePickerController.InfoKey.editedImage] as! UIImage
|
self.oldImage = self.image_avatar.image
|
self.image_avatar.image = image
|
self.uploadAvatar()
|
if #available(iOS 11.0, *) {
|
UIScrollView.appearance().contentInsetAdjustmentBehavior = .never
|
}
|
}
|
}
|