1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
//
// 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)
}
}