12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import UIKit
- import RxSwift
- import PaiaiDataKit
- import PaiaiUIKit
- protocol ContainerViewControllerDelegate: class {
- func presentMine()
- func presentLogin()
- }
- public final class ContainerViewController: PageViewController {
- weak var delegate: ContainerViewControllerDelegate?
- var userInfo: UserInfoViewModel!
- private var disposeBag = DisposeBag()
-
- private var iconView: UIImageView = {
- let iconView = UIImageView(frame: CGRect(x: 0, y: 0, width: 18, height: 32))
-
- iconView.contentMode = .scaleAspectFill
- iconView.isUserInteractionEnabled = true
- iconView.image = UIImage.Navigation.verticalPoints
-
- return iconView
- }()
-
- private var headerView: UIImageView = {
- let headerView = UIImageView(frame: CGRect(x: 20, y: 0, width: 32, height: 32))
-
- headerView.isUserInteractionEnabled = true
- headerView.image = UIImage.defaultAvatar
-
- return headerView
- }()
-
- private var navigationContentView: UIView = {
- let contentView = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 32))
- return contentView
- }()
-
-
- override public func viewDidLoad() {
- super.viewDidLoad()
- makeNavigationBar()
- bindInteraction()
- }
-
- public override func viewDidAppear(_ animated: Bool) {
- super.viewDidAppear(animated)
- bindLoggedInInteraction()
- }
-
- func makeNavigationBar() {
- constructNavigationViewHierarchy()
- }
-
- func constructNavigationViewHierarchy() {
- navigationContentView.addSubview(iconView)
- navigationContentView.addSubview(headerView)
- navigationItem.leftBarButtonItem = UIBarButtonItem(customView: navigationContentView)
- }
- }
- fileprivate extension ContainerViewController {
- func bindLoggedInInteraction() {
- userInfo.notLoggedIn
- .asDriver(onErrorJustReturn: ())
- .drive(onNext: { [unowned self] (_) in
- self.delegate?.presentLogin()
- }).disposed(by: disposeBag)
- }
-
- func bindInteraction() {
- let tap = UITapGestureRecognizer()
- tap.rx.event.subscribe(onNext: { (_) in
- self.delegate?.presentMine()
- }).disposed(by: disposeBag)
- navigationContentView.addGestureRecognizer(tap)
- }
-
- func bindUserInfoToHeaderView() {
- userInfo.shareUserInfo.asObservable()
- .subscribe(onNext: {[unowned self] (info) in
- self.headerView.setImage(info.photoPath, placeholder: UIImage.defaultAvatar)
- }).disposed(by: disposeBag)
- }
- }
|