DemoViewController.swift 3.95 KB
//
//  DemoViewController.swift
//  BreastFeedingDemo
//
//  Created by jzhang on 2022/9/26.
//

import AVFoundation
import Flutter
import UIKit

class DemoViewController: UIViewController {
    fileprivate var popover: Popover!
    fileprivate var manager: ZJTableViewManager!
    @IBOutlet var titleL: UILabel!
    @IBOutlet var stepL1: UILabel!
    @IBOutlet var stepL2: UILabel!
    @IBOutlet var stepL3: UILabel!
    @IBOutlet var scrollView: UIScrollView!

    @IBOutlet weak var sittingTitleL: UILabel!
    @IBOutlet weak var sittingSubtitleL: UILabel!

    @IBOutlet weak var lyingTitleL: UILabel!
    @IBOutlet weak var lyingSubtitleL: UILabel!
    @IBOutlet weak var topConstraint: NSLayoutConstraint!

    override func viewDidLoad() {
        super.viewDidLoad()
        overrideUserInterfaceStyle = .light
        UIApplication.shared.isIdleTimerDisabled = true
        navigationController?.setNavigationBarHidden(true, animated: false)
        scrollView.automaticallyAdjustsScrollIndicatorInsets = false
        scrollView.contentInsetAdjustmentBehavior = .never
        updateUI()
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        topConstraint.constant = view.safeAreaInsets.top
    }

    fileprivate func updateUI() {
        titleL.text = getString().homeTitle
        stepL1.text = getString().homeText1
        stepL2.text = getString().homeText2
        stepL3.text = getString().homeText3

        sittingTitleL.text = getString().sittingGesture.title
        sittingSubtitleL.text = getString().sittingGesture.subTitle
        lyingTitleL.text = getString().lyingGesture.title
        lyingSubtitleL.text = getString().lyingGesture.subTitle
    }

    /// 切换根据选择的语言更新UI
    /// - Parameter language: 语言
    fileprivate func updateUI(language: ViewModel.Language) {
        viewModel.language = language
        updateUI()
    }

    func toSideLyingLandingVC() {
        let sb = UIStoryboard(name: "Main", bundle: nil)
        let vc = sb.instantiateViewController(withIdentifier: "SideLyingLandingVC") as! SideLyingLandingVC
        navigationController?.pushViewController(vc, animated: true)
    }

    func toCradleHoldLandingVC() {
        let sb = UIStoryboard(name: "Main", bundle: nil)
        let vc = sb.instantiateViewController(withIdentifier: "CradleHoldLandingVC") as! CradleHoldLandingVC
        navigationController?.pushViewController(vc, animated: true)
    }

    @IBAction func sideLyingAction(_ sender: Any) {
        viewModel.posture = .lying

        toSideLyingLandingVC()
    }

    @IBAction func cradleHold(_: Any) {
        viewModel.posture = .cradle
        toCradleHoldLandingVC()
    }
}

extension DemoViewController {
    /// 切换语言
    @IBAction func switchLanguageAction(_ sender: UIButton) {
        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 100, height: 135))
        tableView.isScrollEnabled = false
        if #available(iOS 15.0, *) {
            tableView.sectionHeaderTopPadding = 0
        } else {
            // Fallback on earlier versions
        }
        manager = ZJTableViewManager(tableView: tableView)
        manager.register(LanguageCell.self, LanguageCellItem.self)
        let section = ZJTableViewSection(headerHeight: 15, color: .clear)
        manager.add(section: section)
        var currentItem: LanguageCellItem?
        for i in ViewModel.Language.allCases {
            let item = LanguageCellItem(language: i)
            section.add(item: item)
            if i == viewModel.language {
                currentItem = item
            }
            item.setSelectionHandler { [weak self] (callBackItem: LanguageCellItem) in
                self?.popover.dismiss()
                self?.updateUI(language: callBackItem.language)
            }
        }
        currentItem?.select()

        popover = Popover(options: [.type(.down), .blackOverlayColor(UIColor(white: 0.0, alpha: 0.6))])
        popover.show(tableView, fromView: sender)
    }
}