123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- //
- // PublishUploadProgressView.swift
- // RainbowPlanet
- //
- // Created by Christopher on 2019/7/21.
- // Copyright © 2019 RainbowPlanet. All rights reserved.
- // 发布进度のView
- import UIKit
- import FWPopupView
- import RxSwift
- import RxCocoa
- /// 跳转方式
- ///
- /// - none: 默认
- /// - push: push
- enum UploadStatus{
- case uploading
- case success
- case failure
- }
- class PublishUploadProgressView: FWPopupView {
-
- typealias CloseViewClosure = () -> Void
- var closeViewClosure : CloseViewClosure?
-
- var curUploadStatus : UploadStatus? {
- didSet {
- judgeShowStatus()
- }
- }
-
- var uploadProgress: Float? {
- didSet {
- progressView.setProgress(self.uploadProgress ?? 0, animated: true)
- }
- }
-
- let disposeBag = DisposeBag()
-
- override init(frame: CGRect) {
- super.init(frame: frame)
- setupViews()
- setupLayouts()
- }
-
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
-
- func setupViews() {
- self.backgroundColor = kffffffColor
- addSubview(imageView)
- addSubview(progressLabel)
- addSubview(progressView)
- addSubview(failedLabel)
- addSubview(failedCloseButton)
- }
-
- func setupLayouts() {
- imageView.snp.makeConstraints { (make) in
- make.left.equalTo(14)
- make.centerY.equalToSuperview()
- make.size.equalTo(44)
- }
- progressLabel.snp.makeConstraints { (make) in
- make.left.equalTo(imageView.snp_right).offset(10)
- make.top.equalTo(14)
- make.height.equalTo(20)
- }
- progressView.snp.makeConstraints { (make) in
- make.top.equalTo(progressLabel.snp_bottom).offset(10)
- make.left.equalTo(imageView.snp_right).offset(10)
- make.right.equalTo(-15)
- make.height.equalTo(4)
- }
- failedLabel.snp.makeConstraints { (make) in
- make.left.equalTo(imageView.snp_right).offset(10)
- make.centerY.equalToSuperview()
- make.height.equalTo(20)
- }
- failedCloseButton.snp.makeConstraints { (make) in
- make.right.equalTo(-3)
- make.centerY.equalToSuperview()
- make.size.equalTo(44)
- }
- }
-
- lazy var imageView: UIImageView = {
- let imageView = UIImageView()
- imageView.image = kImage(name: "pic_preload")
- imageView.contentMode = .scaleAspectFill
- imageView.clipsToBounds = true
- return imageView
- }()
-
- private lazy var progressLabel: UILabel = {
- let progressLabel = UILabel()
- progressLabel.textColor = k333333Color
- progressLabel.font = kRegularFont14
- progressLabel.textAlignment = .left
- return progressLabel
- }()
-
- private lazy var progressView: UIProgressView = {
- let progressView = UIProgressView(progressViewStyle: .default)
- progressView.setProgress(0, animated: false)
- progressView.progressTintColor = k62CC74Color //进度颜色
- progressView.trackTintColor = kd8d8d8Color //剩余进度颜色
- progressView.cornerRadius = 2
- progressView.masksToBounds = true
- return progressView
- }()
-
- private lazy var failedLabel: UILabel = {
- let failedLabel = UILabel()
- failedLabel.text = "发布失败..."
- failedLabel.textColor = k333333Color
- failedLabel.font = kRegularFont14
- failedLabel.textAlignment = .left
- return failedLabel
- }()
-
- private lazy var failedCloseButton: UIButton = {
- let failedCloseButton = UIButton(type: UIButton.ButtonType.custom)
- failedCloseButton.setImage(kImage(name: "popup_btn_close_black"), for: .normal)
- failedCloseButton.rx.tap.subscribe(onNext: { [weak self] (data) in
- if let closeViewClosure = self?.closeViewClosure {
- closeViewClosure()
- }
- }).disposed(by: disposeBag)
- return failedCloseButton
- }()
-
- class func publishUploadProgressView(attachedView:UIView) -> PublishUploadProgressView {
- let view = PublishUploadProgressView(frame: CGRect(x: 0, y: kNavBarHeight, width: kScreenWidth, height: 62))
- view.attachedView = attachedView
- let vProperty = FWPopupViewProperty()
- vProperty.popupCustomAlignment = .topCenter
- vProperty.popupViewEdgeInsets = UIEdgeInsets(top: kNavBarHeight + 48, left: 0, bottom: 0, right: 0 )
- vProperty.popupAnimationType = .frame
- vProperty.maskViewColor = UIColor(white: 0, alpha: 0.5)
- vProperty.touchWildToHide = "0"
- vProperty.maskViewColor = UIColor.clear
-
- view.vProperty = vProperty
- view.show()
- return view
- }
-
- }
- extension PublishUploadProgressView {
-
- func judgeShowStatus() -> Void {
- switch curUploadStatus {
- case .uploading?,
- .success?:
- progressLabel.isHidden = false
- progressView.isHidden = false
- failedLabel.isHidden = true
- failedCloseButton.isHidden = true
- case .failure?:
- progressLabel.isHidden = true
- progressView.isHidden = true
- failedLabel.isHidden = false
- failedCloseButton.isHidden = false
- case .none:
- break
- }
- }
- }
|