inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
+ inputPaths = (
+ );
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
+ outputPaths = (
+ );
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-frameworks.sh\"\n";
--- /dev/null
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "发送_1@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "发送_1@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
"scale" : "1x"
},
{
- "filename" : "Frame-2 1.png",
+ "filename" : "Group@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "Frame-2.png",
+ "filename" : "Group@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
--- /dev/null
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Slice 7@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Slice 7@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Group_2465@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Group_2465@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Group_2466@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Group_2466@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Group_2340@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Group_2340@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
"scale" : "1x"
},
{
- "filename" : "Frame-7 1.png",
+ "filename" : "Frame@2x(9).png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "Frame-7.png",
+ "filename" : "Frame@3x(8).png",
"idiom" : "universal",
"scale" : "3x"
}
"scale" : "1x"
},
{
- "filename" : "Frame-5 1.png",
+ "filename" : "Frame@2x(2).png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "Frame-5.png",
+ "filename" : "Frame@3x(3).png",
"idiom" : "universal",
"scale" : "3x"
}
--- /dev/null
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Frame@2x(6).png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Frame@3x(7).png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "设置_1@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "设置_1@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
"scale" : "1x"
},
{
- "filename" : "Frame-6 1.png",
+ "filename" : "Frame@2x(4).png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "Frame-6.png",
+ "filename" : "Frame@3x(5).png",
"idiom" : "universal",
"scale" : "3x"
}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Rectangle_745.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Rectangle_745@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Rectangle_745@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Group_2302.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Group_2302@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Group_2302@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Slice 38.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Slice 38@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Slice 38@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Slice 38(2).png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Slice 38@2x(2).png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Slice 38@3x(2).png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Slice 38(1).png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Slice 38@2x(1).png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Slice 38@3x(1).png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Group_2305.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Group_2305@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Group_2305@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Group_2300.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Group_2300@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Group_2300@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Group_2307.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Group_2307@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Group_2307@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Group_2301.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Group_2301@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Group_2301@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Group_2304.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Group_2304@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Group_2304@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
App.shared.window = window
setConfig()
-
-// window?.rootViewController = UINavigationController(rootViewController: SetAccountVC())
window?.rootViewController = BaseTC()
+// window?.rootViewController = UINavigationController(rootViewController: TextTranlateVC())
+
}
func sceneDidDisconnect(_ scene: UIScene) {
titleLabel.do { (v) in
v.textColor = .rgb(0x121212)
- v.font = .medium(20)
+ v.font = .medium(16)
v.textAlignment = .center
v.lineBreakMode = .byTruncatingTail
v.text = navTitle
else{
v.setTitle(item.title!, for: .normal)
}
- v.addTarget(self, action: item.action!, for: .touchUpInside)
+ v.addTarget(item.target, action: item.action!, for: .touchUpInside)
}
views.append(rightBtn)
x = x + w
self.tabBar.backgroundColor = .white
view.backgroundColor = .color(.bgColor)
- self.selectedIndex = 2
+ self.selectedIndex = 4
}
}
--- /dev/null
+//
+// Fi.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/26.
+//
+
+import UIKit
+
+/// Ai回应模型
+public class UBAiResponse {
+ /// 类型,
+ /// 0:AI录音解析错误(只发类型即可,后面字节均不发)
+ /// 1:AI录音解析内容
+ /// 2:AI回应内容
+ /// 3:AI回应错误(只发类型即可,后面字节均不发)
+ /// 4:AI回应结束(只发类型即可,后面字节均不发)
+ public var type: Int = 0
+ /// 类型 start middle end
+ public var state:String = ""
+
+ /// 回复id
+ public var reponseId: String = ""
+ /// 内容
+ public var content: String = ""
+ /// 累积内容
+ public var totalContent: String = ""
+
+
+ init(_ reponseId:String) {
+ self.reponseId = reponseId
+ }
+
+ public var description: String {
+ return "UBAiResponse(type: \(type), state:\(state), content:\(content))"
+ }
+}
+
+
+class FieldRecordingCell:BaseTableViewCell{
+ let bgView = UIView()
+ let line = BrokenLineView()
+ let originalLabel = UILabel()
+ let translationLabel = UILabel()
+
+ override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
+ super.init(style: style, reuseIdentifier: reuseIdentifier)
+
+ }
+
+ required init?(coder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ override func setupViews() {
+ contentView.backgroundColor = .rgb(0xF6F6F6)
+
+ bgView.do { v in
+ v.yc.setCornerRadius(12)
+ v.backgroundColor = .white
+ }
+ originalLabel.do { v in
+ v.text = "你好,欢迎使用AI翻译,点击下方按钮立即开始咱们的对话吧"
+ v.font = .regular(14)
+ v.textColor = .hexString("#606D80")
+ v.numberOfLines = 0
+ v.textAlignment = .left
+ }
+ translationLabel.do { v in
+ v.text = "Hello, welcome to AI translation, click the button below now Let's start our conversation"
+ v.font = .regular(14)
+ v.textColor = .hexString("#121212")
+ v.numberOfLines = 0
+ v.textAlignment = .left
+ }
+ line.do { v in
+// v.backgroundColor = .hexString("#93C6EC")
+ }
+ contentView.addSubview(bgView)
+ bgView.addSubviews([originalLabel,translationLabel,line])
+
+
+// let brokenLineView = BrokenLineView(frame: CGRect(x: 0, y: 0, width: 300, height:100))
+// addSubview(brokenLineView)
+ }
+
+ override func setupLayout() {
+ bgView.snp.makeConstraints { make in
+ make.top.bottom.equalToSuperview().inset(10)
+ make.width.lessThanOrEqualTo(kScreenWid - 36)
+ make.left.equalToSuperview().inset(18)
+ }
+
+ originalLabel.snp.makeConstraints { make in
+ make.top.equalToSuperview().inset(14)
+ make.left.equalToSuperview().inset(10)
+ make.width.lessThanOrEqualTo(kScreenWid - 60)
+ }
+ line.snp.makeConstraints { make in
+ make.left.right.equalToSuperview().inset(10)
+ make.height.equalTo(10)
+ make.top.equalTo(originalLabel.snp.bottom).offset(18)
+ }
+
+ translationLabel.snp.makeConstraints { make in
+ make.top.equalTo(line.snp.bottom).offset(18)
+ make.left.equalToSuperview().inset(10)
+ make.width.lessThanOrEqualTo(kScreenWid - 60)
+ make.bottom.equalToSuperview().inset(10)
+ }
+ }
+
+// var data:UBAiResponse!{
+// didSet{
+// if data.type == 1 {
+// bgView.snp.remakeConstraints { make in
+// make.top.bottom.equalToSuperview().inset(10)
+// make.right.equalToSuperview().inset(20)
+// }
+// }
+// else{
+//
+// bgView.snp.remakeConstraints { make in
+// make.top.bottom.equalToSuperview().inset(10)
+// make.left.equalToSuperview().inset(20)
+// }
+// }
+// msgLabel.text = data.totalContent
+// }
+// }
+}
+
+
+
--- /dev/null
+//
+// FieldRecordingVC.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/6.
+//
+
+import UIKit
+
+class FieldRecordingVC:BaseVC{
+ let toolBar = SendToolBar()
+ let tableView = UITableView(frame: CGRectZero, style: .plain)
+ var dataList = [1,2,3]
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ }
+ override func setupViews() {
+ self.navBar.title = "现场录音"
+ tableView.backgroundColor = .clear
+ tableView.delegate = self
+ tableView.dataSource = self
+ tableView.estimatedRowHeight = 60
+ tableView.separatorStyle = .none
+ tableView.register(FieldRecordingCell.self, forCellReuseIdentifier: FieldRecordingCell.reuseID)
+ view.addSubview(tableView)
+
+
+ toolBar.textField.text = ""
+ toolBar.delegate = self
+ view.addSubview(toolBar)
+
+ }
+ override func setupLayout() {
+ toolBar.snp.makeConstraints { make in
+ make.width.centerX.equalToSuperview()
+ make.height.equalTo(52)
+ make.bottom.equalToSuperview().inset(20)
+ }
+ tableView.snp.makeConstraints { make in
+ make.top.equalToSuperview().inset(80)
+ make.left.right.equalToSuperview()
+ make.bottom.equalTo(toolBar.snp.top)
+ }
+ }
+ func scrollToBottom(){
+ if dataList.count > 0 {
+ tableView.scrollToRow(at: IndexPath(row: dataList.count - 1, section: 0), at: .none, animated: true)
+ }
+ }
+}
+extension FieldRecordingVC:UITableViewDelegate,UITableViewDataSource {
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return dataList.count
+ }
+
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = FieldRecordingCell.cell(withTableView: tableView, indexPath: indexPath)
+// cell.data = dataList[indexPath.row]
+ return cell
+ }
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+
+ }
+}
+extension FieldRecordingVC:SendToolBarDelegate{
+ func sendToolBar(_ toolBar: SendToolBar, _ text: String) {
+ toolBar.textField.resignFirstResponder()
+// list.append(ChatCellModel(isSend:true,content:text))
+// tableView.reloadData()
+// scrollToBottom()
+// StartburstGlassesSdk.shared().chat.fireText(text)
+ }
+}
let dateLabel = UILabel()
let typeLabel = UILabel()
- var type:MineCellType = .user{
- didSet{
- titleLabel.text = type.title
- }
- }
+// var type:MineCellType = .user{
+// didSet{
+// titleLabel.text = type.title
+// }
+// }
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
class HistoryRecordVC: BaseVC{
let tableView = UITableView(frame: .zero, style: .plain)
let bottomView = HistoryBottonView()
- var list:[MineCellType] = [.user,.device,.userAgreement,.privacyPolicy,.language,.update,.feeback,.about]
+ var list = [1,2,3,4,5,6,7,8]
override func viewDidLoad() {
super.viewDidLoad()
override func setupViews() {
navBar.do { v in
v.title = "历史录音"
- let items = [NavigationRightItem(image: UIImage(named: "filter"),target: self, action: #selector(searchAction)),NavigationRightItem(image: UIImage(named: "search"), target: self,action: #selector(searchAction))]
+ let items = [NavigationRightItem(image: UIImage(named: "filter"),target: self, action: #selector(filterAction)),NavigationRightItem(image: UIImage(named: "search"), target: self,action: #selector(searchAction))]
v.setupRightViews(items)
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = HistoryRecordCell.cell(withTableView: tableView, indexPath: indexPath)
- cell.type = list[indexPath.row]
+// cell.type = list[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
}
}
-
+enum GenderType:Int{
+ case man
+ case female
+ var title:String{
+ switch self {
+ case .man:
+ return "男"
+ case .female:
+ return "女"
+ }
+ }
+}
class SelectCell: BaseTableViewCell {
let bgView = UIView()
titleLabel.text = shareType.title
}
}
-
+ var genderType:GenderType = .man{
+ didSet{
+ titleLabel.text = genderType.title
+ }
+ }
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
import UIKit
class RoleListVC: BaseVC{
let tableView = UITableView(frame: .zero, style: .plain)
- var list:[MineCellType] = [.user,.device,.userAgreement,.privacyPolicy,.language,.update,.feeback,.about]
+ var list:[MineCellType] = []
override func viewDidLoad() {
super.viewDidLoad()
--- /dev/null
+//
+// LangeuageView.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/26.
+//
+
--- /dev/null
+//
+// TextTranlateVC.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/6.
+//
+
+import UIKit
+
+class TextTranlateVC:BaseVC{
+ let toolBar = SendToolBar()
+ let tableView = UITableView(frame: CGRectZero, style: .plain)
+ var dataList = [1,2,3]
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ }
+ override func setupViews() {
+ self.navBar.title = "文本翻译"
+ tableView.backgroundColor = .clear
+ tableView.delegate = self
+ tableView.dataSource = self
+ tableView.estimatedRowHeight = 60
+ tableView.separatorStyle = .none
+ tableView.register(TranslateCell.self, forCellReuseIdentifier: TranslateCell.reuseID)
+ view.addSubview(tableView)
+
+
+ toolBar.textField.text = ""
+ toolBar.delegate = self
+ view.addSubview(toolBar)
+
+ }
+ override func setupLayout() {
+ toolBar.snp.makeConstraints { make in
+ make.width.centerX.equalToSuperview()
+ make.height.equalTo(52)
+ make.bottom.equalToSuperview().inset(20)
+ }
+ tableView.snp.makeConstraints { make in
+ make.top.equalToSuperview().inset(80)
+ make.left.right.equalToSuperview()
+ make.bottom.equalTo(toolBar.snp.top)
+ }
+ }
+ func scrollToBottom(){
+ if dataList.count > 0 {
+ tableView.scrollToRow(at: IndexPath(row: dataList.count - 1, section: 0), at: .none, animated: true)
+ }
+ }
+}
+extension TextTranlateVC:UITableViewDelegate,UITableViewDataSource {
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return dataList.count
+ }
+
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = TranslateCell.cell(withTableView: tableView, indexPath: indexPath)
+ // cell.data = dataList[indexPath.row]
+ return cell
+ }
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+
+ }
+}
+extension TextTranlateVC:SendToolBarDelegate{
+ func sendToolBar(_ toolBar: SendToolBar, _ text: String) {
+ toolBar.textField.resignFirstResponder()
+ // list.append(ChatCellModel(isSend:true,content:text))
+ // tableView.reloadData()
+ // scrollToBottom()
+ // StartburstGlassesSdk.shared().chat.fireText(text)
+ }
+}
--- /dev/null
+//
+// TranslateCell.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/26.
+//
+
+class TranslateCell:BaseTableViewCell{
+ let bgView = UIView()
+ let line = BrokenLineView()
+ let originalLabel = UILabel()
+ let translationLabel = UILabel()
+
+ override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
+ super.init(style: style, reuseIdentifier: reuseIdentifier)
+
+ }
+
+ required init?(coder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ override func setupViews() {
+ contentView.backgroundColor = .rgb(0xF6F6F6)
+
+ bgView.do { v in
+ v.yc.setCornerRadius(12)
+ v.backgroundColor = .white
+ }
+ originalLabel.do { v in
+ v.text = "你好,欢迎使用AI翻译,点击下方按钮立即开始咱们的对话吧"
+ v.font = .regular(14)
+ v.textColor = .hexString("#606D80")
+ v.numberOfLines = 0
+ v.textAlignment = .left
+ }
+ translationLabel.do { v in
+ v.text = "Hello, welcome to AI translation, click the button below now Let's start our conversation"
+ v.font = .regular(14)
+ v.textColor = .hexString("#121212")
+ v.numberOfLines = 0
+ v.textAlignment = .left
+ }
+ line.do { v in
+ // v.backgroundColor = .hexString("#93C6EC")
+ }
+ contentView.addSubview(bgView)
+ bgView.addSubviews([originalLabel,translationLabel,line])
+
+
+ // let brokenLineView = BrokenLineView(frame: CGRect(x: 0, y: 0, width: 300, height:100))
+ // addSubview(brokenLineView)
+ }
+
+ override func setupLayout() {
+ bgView.snp.makeConstraints { make in
+ make.top.bottom.equalToSuperview().inset(10)
+ make.width.lessThanOrEqualTo(kScreenWid - 36)
+ make.left.equalToSuperview().inset(18)
+ }
+
+ originalLabel.snp.makeConstraints { make in
+ make.top.equalToSuperview().inset(14)
+ make.left.equalToSuperview().inset(10)
+ make.width.lessThanOrEqualTo(kScreenWid - 60)
+ }
+ line.snp.makeConstraints { make in
+ make.left.right.equalToSuperview().inset(10)
+ make.height.equalTo(10)
+ make.top.equalTo(originalLabel.snp.bottom).offset(18)
+ }
+
+ translationLabel.snp.makeConstraints { make in
+ make.top.equalTo(line.snp.bottom).offset(18)
+ make.left.equalToSuperview().inset(10)
+ make.width.lessThanOrEqualTo(kScreenWid - 60)
+ make.bottom.equalToSuperview().inset(10)
+ }
+ }
+
+ // var data:UBAiResponse!{
+ // didSet{
+ // if data.type == 1 {
+ // bgView.snp.remakeConstraints { make in
+ // make.top.bottom.equalToSuperview().inset(10)
+ // make.right.equalToSuperview().inset(20)
+ // }
+ // }
+ // else{
+ //
+ // bgView.snp.remakeConstraints { make in
+ // make.top.bottom.equalToSuperview().inset(10)
+ // make.left.equalToSuperview().inset(20)
+ // }
+ // }
+ // msgLabel.text = data.totalContent
+ // }
+ // }
+}
+
+
+
//
import UIKit
-
-class AboutVC:BaseVC{
+class AboutVC: BaseVC{
+ let tableView = UITableView(frame: .zero, style: .plain)
+ let list:[CustomCellType] = [.update,.userAgreement,.privacyPolicy]
override func viewDidLoad() {
super.viewDidLoad()
-
-
+ // Do any additional setup after loading the view.
}
override func setupViews() {
self.navBar.title = "关于我们"
+ tableView.do { v in
+ v.backgroundColor = .color(.bgColor)
+ v.delegate = self
+ v.dataSource = self
+ v.rowHeight = 52
+ v.sectionHeaderHeight = 52
+ v.separatorStyle = .none
+ v.register(CustomCell1.self, forCellReuseIdentifier: CustomCell1.reuseID)
+ v.register(CustomSectionHeader.self, forHeaderFooterViewReuseIdentifier: CustomSectionHeader.reuseID)
+ v.tableHeaderView = AboutHeaderView(frame: CGRect(x: 0, y: 0, width: kScreenWid, height: 175))
+ }
+ view.addSubview(tableView)
}
override func setupLayout() {
+ tableView.snp.makeConstraints { make in
+ make.left.right.bottom.equalToSuperview()
+ make.top.equalTo(kNavBtm)
+ }
+ }
+}
+
+extension AboutVC:UITableViewDelegate,UITableViewDataSource {
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return list.count
+ }
+
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = CustomCell1.cell(withTableView: tableView, indexPath: indexPath)
+ cell.type = list[indexPath.row]
+ let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
+ if indexPath.row == 0 {
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 8, height: 8))
+ }
+ else if indexPath.row == list.count - 1{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 8, height: 8))
+ }
+ else{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0))
+ }
+ return cell
+ }
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+ let data = list[indexPath.row]
+
+ }
+}
+
+
+class AboutHeaderView: BaseView {
+ let icon = UIImageView()
+ let titleLabel = UILabel()
+
+ override func setupViews() {
+ addSubviews([titleLabel,icon])
+ icon.do { v in
+ v.image = UIImage(named: "logo_1")
+ }
+ titleLabel.do { (v) in
+ v.textColor = .hexString("#666666")
+ v.font = .regular(14)
+ v.textAlignment = .left
+ v.text = "当前版本:2.1.1"
+ }
+
+ }
+
+ override func setupLayout() {
+ icon.snp.makeConstraints { (m) in
+ m.size.equalTo(70)
+ m.centerX.equalToSuperview()
+ m.top.equalToSuperview().offset(50)
+ }
+ titleLabel.snp.makeConstraints { (m) in
+ m.top.equalTo(icon.snp.bottom).offset(12)
+ m.centerX.equalToSuperview()
+ }
}
}
v.rowHeight = 52
v.sectionHeaderHeight = 52
v.separatorStyle = .none
- v.register(UserInfoCell.self, forCellReuseIdentifier: CustomCell1.reuseID)
- v.register(UserInfoImageCell.self, forCellReuseIdentifier: UserInfoImageCell.reuseID)
- v.register(UserInfoSectionHeader.self, forHeaderFooterViewReuseIdentifier: UserInfoSectionHeader.reuseID)
+ v.register(CustomCell1.self, forCellReuseIdentifier: CustomCell1.reuseID)
+ v.register(CustomSectionHeader.self, forHeaderFooterViewReuseIdentifier: CustomSectionHeader.reuseID)
+ v.tableHeaderView = AccountSetHeaderView(frame: CGRect(x: 0, y: 0, width: kScreenWid, height: 50))
+
}
return list[section].list.count
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
- let view = UserInfoSectionHeader.header(withTableView: tableView)
+ let view = CustomSectionHeader.header(withTableView: tableView)
view.titleLabel.text = list[section].title
return view
}
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let data = list[indexPath.section].list[indexPath.row]
-
+ switch data {
+ case .account:
+ App.shared.goToPage(SetAccountVC())
+ case .phone:
+ App.shared.goToPage(SetPhoneVC())
+ case .email:
+ App.shared.goToPage(SetEmailVC())
+ case .thirdLogin:
+// App.shared.goToPage(SetAccountVC())
+ break
+ default:
+ break
+ }
}
}
-extension AccountSetVC{
- @objc func logoutAction(){
+
+class AccountSetHeaderView: BaseView {
+ let icon = UIImageView()
+ let titleLabel = UILabel()
+ let valueLabel = UILabel()
+ let nextIcon = UIImageView()
+ override func setupViews() {
+ addSubviews([titleLabel,icon,valueLabel,nextIcon])
+ icon.do { v in
+ v.image = UIImage(named: "head")
+ v.yc.setCornerRadius(27)
+ v.backgroundColor = .black.withAlphaComponent(0.1)
+ }
+ titleLabel.do { (v) in
+ v.textColor = .rgb(0x121212)
+ v.font = .regular(20)
+ v.textAlignment = .left
+ v.text = "Juliaxxxx"
+ }
+ valueLabel.do { (v) in
+ v.textColor = .rgb(0x666666)
+ v.font = .regular(14)
+ v.textAlignment = .left
+ v.text = "手机号:+86 134****4811"
+ }
+ nextIcon.image = UIImage(named: "arrow_next")
+ yc.addTap(target: self, action: #selector(tapAction))
+ }
+
+ override func setupLayout() {
+ icon.snp.makeConstraints { (m) in
+ m.width.equalTo(54)
+ m.height.equalTo(54)
+ m.left.equalToSuperview().inset(15)
+ m.top.equalToSuperview()
+ }
+ titleLabel.snp.makeConstraints { (m) in
+ m.top.equalToSuperview().inset(5)
+ m.left.equalTo(icon.snp.right).offset(15)
+ }
+ valueLabel.snp.makeConstraints { (m) in
+ m.bottom.equalToSuperview().inset(5)
+ m.left.equalTo(icon.snp.right).offset(15)
+ }
+ nextIcon.snp.makeConstraints { (m) in
+ m.width.equalTo(8)
+ m.height.equalTo(12)
+ m.right.equalToSuperview().inset(15)
+ m.centerY.equalToSuperview()
+ }
+ }
+ @objc func tapAction(){
+ App.shared.goToPage(UserInfoVC())
}
}
--- /dev/null
+//
+// InstructionsVC.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/26.
+//
+
+import UIKit
+class InstructionsVC: BaseVC{
+ let tableView = UITableView(frame: .zero, style: .plain)
+ let list:[CustomCellType] = [.notice,.language]
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view.
+ }
+ override func setupViews() {
+ self.navBar.title = "电子说明书"
+ tableView.do { v in
+ v.backgroundColor = .color(.bgColor)
+ v.delegate = self
+ v.dataSource = self
+ v.rowHeight = 52
+ v.sectionHeaderHeight = 52
+ v.separatorStyle = .none
+ v.register(CustomCell1.self, forCellReuseIdentifier: CustomCell1.reuseID)
+ v.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenHei, height: 20))
+ }
+
+
+
+ view.addSubview(tableView)
+ }
+ override func setupLayout() {
+ tableView.snp.makeConstraints { make in
+ make.left.right.bottom.equalToSuperview()
+ make.top.equalTo(kNavBtm)
+ }
+ }
+}
+
+extension InstructionsVC:UITableViewDelegate,UITableViewDataSource {
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return list.count
+ }
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = CustomCell1.cell(withTableView: tableView, indexPath: indexPath)
+// cell.type = list[indexPath.row]
+ cell.titleLabel.text = "Deep Gen2 Max"
+ let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
+ if indexPath.row == 0 {
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 12, height: 12))
+ }
+ else if indexPath.row == list.count - 1{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 12, height: 12))
+ }
+ else{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0))
+ }
+ return cell
+ }
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+ let data = list[indexPath.row]
+
+ }
+}
v.keyboardType = .phonePad
v.placeholder = "请输入密码"
v.isSecureTextEntry = true
- }
-
-
+ }
btn.setImage(UIImage(named: "pwd_close"), for: .normal)
btn.setImage(UIImage(named: "pwd_open"), for: .selected)
btn.addTarget(self, action: #selector(btnAction), for: .touchUpInside)
--- /dev/null
+//
+// MoreSetVC.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/26.
+//
+
+import UIKit
+class MoreSetVC: BaseVC{
+ let tableView = UITableView(frame: .zero, style: .plain)
+ let list:[CustomCellType] = [.notice,.language]
+
+ let switchBtn = CustomButton()
+ let logoutBtn = CustomButton()
+ let deactivateBtn = CustomButton()
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view.
+ }
+ override func setupViews() {
+ self.navBar.title = "更多设置"
+ tableView.do { v in
+ v.backgroundColor = .color(.bgColor)
+ v.delegate = self
+ v.dataSource = self
+ v.rowHeight = 52
+ v.sectionHeaderHeight = 52
+ v.separatorStyle = .none
+ v.register(CustomCell1.self, forCellReuseIdentifier: CustomCell1.reuseID)
+ v.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenHei, height: 20))
+ v.bounces = false
+ }
+
+ switchBtn.set(title: "切换账号",style: .theme3, target: self, action: #selector(swictAction))
+ logoutBtn.set(title: "退出登录",style: .theme3, target: self, action: #selector(logoutAction))
+ deactivateBtn.set(title: "注销账号",style: .theme3, target: self, action: #selector(deactivateAction))
+
+ view.addSubviews([tableView,switchBtn,logoutBtn,deactivateBtn])
+
+
+ }
+ override func setupLayout() {
+ tableView.snp.makeConstraints { make in
+ make.left.right.equalToSuperview()
+ make.top.equalToSuperview().inset(kNavBtm)
+ make.height.equalTo(124)
+ }
+ deactivateBtn.snp.makeConstraints { make in
+ make.bottom.equalToSuperview().inset(kSafeBtm + 10)
+ make.left.right.equalToSuperview().inset(18)
+ make.height.equalTo(55)
+ }
+ logoutBtn.snp.makeConstraints { make in
+ make.bottom.equalTo(deactivateBtn.snp.top).offset(-20)
+ make.left.right.equalToSuperview().inset(18)
+ make.height.equalTo(55)
+ }
+ switchBtn.snp.makeConstraints { make in
+ make.bottom.equalTo(logoutBtn.snp.top).offset(-20)
+ make.left.right.equalToSuperview().inset(18)
+ make.height.equalTo(55)
+ }
+ }
+ @objc func swictAction(){
+
+ }
+ @objc func logoutAction(){
+
+ }
+ @objc func deactivateAction(){
+
+ }
+}
+
+extension MoreSetVC:UITableViewDelegate,UITableViewDataSource {
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return list.count
+ }
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = CustomCell1.cell(withTableView: tableView, indexPath: indexPath)
+ cell.type = list[indexPath.row]
+ let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
+ if indexPath.row == 0 {
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 12, height: 12))
+ }
+ else if indexPath.row == list.count - 1{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 12, height: 12))
+ }
+ else{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0))
+ }
+ return cell
+ }
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+ let data = list[indexPath.row]
+ switch data {
+ case .language:
+ App.shared.goToPage(LanguageVC())
+ case .notice:
+// App.shared.goToPage(SetPhoneVC())
+ break
+ default:
+ break
+ }
+ }
+}
--- /dev/null
+//
+// MyDeviceList.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/26.
+//
+
+import UIKit
+class MyDeviceList: BaseVC{
+ let tableView = UITableView(frame: .zero, style: .plain)
+ let bottomView = HistoryBottonView()
+ var list = [1,2,3,4,5,6,7,8]
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view.
+ }
+ override func setupViews() {
+ navBar.do { v in
+ v.title = "设备详情"
+ }
+
+ tableView.do { v in
+ v.backgroundColor = .rgb(0xF7F7F7)
+ v.delegate = self
+ v.dataSource = self
+ v.estimatedRowHeight = 84
+ v.separatorStyle = .none
+ v.register(MyDeviceListCell.self, forCellReuseIdentifier: MyDeviceListCell.reuseID)
+ }
+ view.addSubviews([tableView])
+ }
+ override func setupLayout() {
+ tableView.snp.makeConstraints { make in
+ make.left.right.equalToSuperview()
+ make.top.equalTo(kNavBtm)
+ make.bottom.equalToSuperview()
+ }
+ }
+}
+
+extension MyDeviceList:UITableViewDelegate,UITableViewDataSource {
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return list.count
+ }
+
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = MyDeviceListCell.cell(withTableView: tableView, indexPath: indexPath)
+ // cell.type = list[indexPath.row]
+ return cell
+ }
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+ let data = list[indexPath.row]
+
+ }
+// // 实现滑动删除功能
+// func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
+// if editingStyle == .delete {
+// // 从数据源中移除对应数据
+// list.remove(at: indexPath.row)
+// // 从表格中删除对应行
+// tableView.deleteRows(at: [indexPath], with:.fade)
+// }
+// }
+//
+// // 允许编辑
+// func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
+// return true
+// }
+}
+class MyDeviceListCell: BaseTableViewCell {
+ let bgView = UIView()
+ let playIcon = UIImageView()
+ let titleLabel = UILabel()
+
+ override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
+ super.init(style: style, reuseIdentifier: reuseIdentifier)
+ }
+
+ required init?(coder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+ override func setupViews() {
+ contentView.addSubview(bgView)
+ bgView.addSubviews([playIcon,titleLabel])
+
+ backgroundColor = .rgb(0xF7F7F7)
+ contentView.backgroundColor = .clear
+ selectionStyle = .none
+ bgView.do { v in
+ v.backgroundColor = UIColor.white
+ v.layer.cornerRadius = 12
+ v.layer.masksToBounds = true
+ }
+ titleLabel.do { (v) in
+ v.textColor = .rgb(0x121212)
+ v.font = .bold(16)
+ v.textAlignment = .left
+ v.text = "Deep Gen2 Max"
+ }
+
+ playIcon.do { v in
+ v.image = UIImage(named: "device_list_icon")
+ }
+ }
+
+ override func setupLayout() {
+ bgView.snp.makeConstraints { (m) in
+ m.left.right.equalToSuperview().inset(15)
+ m.top.equalToSuperview().inset(5)
+ m.bottom.equalToSuperview().inset(5)
+ m.height.equalTo(74)
+ }
+
+ playIcon.snp.makeConstraints { (m) in
+ m.size.equalTo(24)
+ m.centerY.equalToSuperview()
+ m.left.equalToSuperview().inset(16)
+ }
+ titleLabel.snp.makeConstraints { (m) in
+ m.centerY.equalToSuperview()
+ m.left.equalToSuperview().offset(56)
+ }
+
+ }
+}
--- /dev/null
+//
+// MineBannerView.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/26.
+//
+
+
+import Foundation
+import UIKit
+import FSPagerView
+
+class BannerModel: NSObject {
+ /// id
+ var id = ""
+ /// 图片
+ var imgPath = ""
+ /// 跳转类型 -1不跳转 0外链
+ var jumpType = -1
+ /// 跳转地址
+ var jumpValue = ""
+}
+
+final class MineBannerView: BaseView {
+ private var dataArray = [BannerModel]()
+ private let pagerView = FSPagerView()
+ private let pageControl = FSPageControl()
+
+ public func config(list:[BannerModel]) {
+ self.dataArray = list
+ self.pageControl.numberOfPages = dataArray.count
+ self.pagerView.reloadData()
+ }
+ override func setupLayout() {
+ addSubview(pagerView)
+ addSubview(pageControl)
+
+ pagerView.snp.makeConstraints { (m) in
+ m.top.bottom.equalToSuperview()
+ m.left.right.equalToSuperview()
+ }
+ pageControl.snp.makeConstraints { (m) in
+ m.width.equalToSuperview()
+ m.height.equalTo(25)
+ m.bottom.equalToSuperview().inset(10)
+ m.centerX.equalToSuperview()
+ }
+ }
+ override func setupViews() {
+ backgroundColor = .clear
+ clipsToBounds = true
+ pagerView.do { v in
+ v.dataSource = self
+ v.delegate = self
+ v.interitemSpacing = 18
+ v.bounces = false
+ v.isInfinite = true
+ v.automaticSlidingInterval = 4
+ v.itemSize = CGSize(width: kScreenWid - 36 , height: 126)
+ v.register(PictureViewCell.self, forCellWithReuseIdentifier: "PictureViewCell")
+ }
+
+ pageControl.do { v in
+ v.contentHorizontalAlignment = .center
+ v.hidesForSinglePage = true
+ v.setFillColor(UIColor.white.withAlphaComponent(0.4), for: .normal)
+ v.setFillColor(.white, for: .selected)
+ }
+ }
+}
+
+extension MineBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
+ func numberOfItems(in pagerView: FSPagerView) -> Int {
+ return dataArray.count
+ }
+
+ func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
+ let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "PictureViewCell", at: index) as! PictureViewCell
+ let model = dataArray[index]
+// cell.picture.kf.setImage(with: model.imgPath.yc.asUrl)
+ cell.picture.image = UIImage(named: model.imgPath)
+ return cell
+ }
+
+ func pagerViewWillEndDragging(_ pagerView: FSPagerView, targetIndex: Int) {
+ self.pageControl.currentPage = targetIndex
+ }
+ func pagerViewDidEndScrollAnimation(_ pagerView: FSPagerView) {
+ self.pageControl.currentPage = pagerView.currentIndex
+ }
+
+ func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int){
+ let model = dataArray[index]
+// if model.jumpType == 0 {
+// if let url = model.jumpValue.fragmentUrl {
+// let request = URLRequest(url: url)
+// let params = BaseWebViewParams(request:request)
+// let vc = BaseWebViewController(initData: params)
+// UIViewController.yc.currentNav?.pushViewController(vc, animated: true)
+// } //UIApplication.shared.canOpenURL(URL(string: ))
+// }
+ }
+}
+
+
+fileprivate class PictureViewCell: FSPagerViewCell {
+ let picture = UIImageView()
+
+ override init(frame: CGRect) {
+ super.init(frame: frame)
+
+ addSubview(picture)
+
+ picture.snp.makeConstraints { (m) in
+ m.edges.equalToSuperview()
+ }
+
+ picture.do { (v) in
+ v.yc.setCornerRadius(8)
+ }
+// picture.backgroundColor = .lightGray
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+}
import UIKit
public enum MineCellType: Int {
- case user
- case device
- case userAgreement
- case privacyPolicy
- case language
+ case instructions
case update
+ case more
case feeback
case about
var title:String{
switch self {
- case .user:
- return "用户管理"
- case .device:
- return "设备详情"
- case .userAgreement:
- return "用户协议"
- case .privacyPolicy:
- return "隐私政策"
- case .language:
- return "语言设置"
+ case .instructions:
+ return "电子说明书"
case .update:
return "固件升级"
+ case .more:
+ return "更多设置"
case .feeback:
return "意见反馈"
case .about:
}
var icon:String{
switch self {
- case .user:
- return "mine_cell_user"
- case .device:
- return "mine_cell_device"
- case .userAgreement:
- return "mine_cell_userAgreement"
- case .privacyPolicy:
- return "mine_cell_privacy"
- case .language:
- return "mine_cell_language"
+ case .instructions:
+ return "mine_cell_instru"
case .update:
return "mine_cell_update"
+ case .more:
+ return "mine_cell_more"
case .feeback:
return "mine_cell_feedback"
case .about:
class MineCell: BaseTableViewCell {
let bgView = UIView()
- let icon = UIImageView()
let titleLabel = UILabel()
let nextIcon = UIImageView()
+ let valueIcon = UIImageView()
- var type:MineCellType = .user{
+ var type:MineCellType = .update{
didSet{
- icon.image = UIImage(named: type.icon)
titleLabel.text = type.title
+ valueIcon.image = UIImage(named: type.icon)
}
}
+
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
}
override func setupViews() {
contentView.addSubview(bgView)
- bgView.addSubviews([titleLabel,icon,nextIcon])
+ bgView.addSubviews([titleLabel,nextIcon,valueIcon])
backgroundColor = .rgb(0xF7F7F7)
contentView.backgroundColor = .clear
selectionStyle = .none
bgView.do { v in
v.backgroundColor = UIColor.white
- v.layer.cornerRadius = 12
- v.layer.masksToBounds = true
}
titleLabel.do { (v) in
v.textColor = .rgb(0x121212)
- v.font = .bold(12)
+ v.font = .bold(14)
v.textAlignment = .left
}
nextIcon.image = UIImage(named: "arrow_next")
override func setupLayout() {
bgView.snp.makeConstraints { (m) in
- m.left.right.equalToSuperview().inset(15)
- m.top.equalToSuperview().inset(6)
- m.bottom.equalToSuperview().inset(6)
- m.height.equalTo(48)
+ m.left.right.equalToSuperview().inset(18)
+ m.top.equalToSuperview()
+ m.bottom.equalToSuperview()
+ }
+ titleLabel.snp.makeConstraints { (m) in
+ m.centerY.equalToSuperview()
+ m.left.equalToSuperview().offset(60)
+ m.height.equalToSuperview()
}
nextIcon.snp.makeConstraints { (m) in
m.width.equalTo(8)
m.right.equalToSuperview().inset(15)
m.centerY.equalToSuperview()
}
- icon.snp.makeConstraints { (m) in
- m.width.equalTo(24)
- m.height.equalTo(24)
- m.left.equalToSuperview().inset(15)
+ valueIcon.snp.makeConstraints { (m) in
+ m.size.equalTo(24)
+ m.left.equalToSuperview().inset(20)
m.centerY.equalToSuperview()
}
- titleLabel.snp.makeConstraints { (m) in
- m.centerY.equalTo(icon)
- m.left.equalTo(icon.snp.right).offset(15)
- m.height.equalToSuperview()
- }
-
}
}
import UIKit
class MineHeaderView: BaseView {
- let userView = MineUserInfoView()
+ let userInfo = MineUserInfoView()
+ let banner = MineBannerView()
+
+ override func setupViews() {
+ addSubviews([userInfo,banner])
+ let model1 = BannerModel()
+ model1.imgPath = "mine_banner1"
+ let model2 = BannerModel()
+ model2.imgPath = "mine_banner2"
+ let model3 = BannerModel()
+ model3.imgPath = "mine_banner3"
+ banner.config(list: [model1,model2,model3])
+ }
+ override func setupLayout() {
+ userInfo.snp.makeConstraints { (m) in
+ m.top.equalToSuperview()
+ m.left.right.equalToSuperview()
+ m.height.equalTo(100)
+ }
+ banner.snp.makeConstraints { (m) in
+ m.height.equalTo(126)
+ m.left.right.equalToSuperview()
+ m.top.equalTo(userInfo.snp.bottom).offset(20)
+ }
+ }
+}
+
+
+class MineUserInfoView: BaseView {
+ let icon = UIImageView()
+ let titleLabel = UILabel()
+ let deviceLabel = UILabel()
override func setupViews() {
- backgroundColor = .clear
- addSubviews([userView])
+ addSubviews([titleLabel,icon,deviceLabel])
+
+ icon.do { v in
+ v.image = UIImage(named: "head")
+ v.yc.setCornerRadius(40)
+ v.backgroundColor = .white
+ }
+ titleLabel.do { (v) in
+ v.textColor = .rgb(0x121212)
+ v.font = .regular(26)
+ v.textAlignment = .left
+ v.text = "Juliaxxxx"
+
+ }
+ deviceLabel.do { (v) in
+ v.backgroundColor = .white
+ v.textColor = .rgb(0x666666)
+ v.font = .regular(14)
+ v.textAlignment = .center
+ v.text = "共4个智能设备"
+ v.yc.setCornerRadius(15)
+ v.yc.addTap(target: self, action:#selector(deviceListAction))
+ }
+ yc.addTap(target: self, action: #selector(tapAction))
+
}
+
override func setupLayout() {
- userView.snp.makeConstraints { make in
- make.left.right.equalToSuperview().inset(15)
- make.top.equalToSuperview().inset(30)
+
+ titleLabel.snp.makeConstraints { (m) in
+ m.top.equalToSuperview().inset(10)
+ m.left.equalToSuperview().inset(38)
}
+ deviceLabel.snp.makeConstraints { (m) in
+ m.top.equalToSuperview().inset(60)
+ m.left.equalToSuperview().inset(38)
+ m.height.equalTo(30)
+ m.width.equalTo(120)
+ }
+ icon.snp.makeConstraints { (m) in
+ m.size.equalTo(80)
+ m.right.equalToSuperview().inset(38)
+ m.top.equalToSuperview().inset(10)
+ }
+ }
+ @objc func tapAction(){
+ App.shared.goToPage(UserInfoVC())
+ }
+ @objc func deviceListAction(){
+ App.shared.goToPage(MyDeviceList())
}
}
+++ /dev/null
-//
-// MineOrderView.swift
-// ShenYin
-//
-// Created by liangshi on 2025/7/30.
-//
-
-import UIKit
-class MineOrderView: BaseView {
- let bgView = UIView()
- let bgImgView1 = UIImageView()
- let bgImgView2 = UIImageView()
- let button1 = MineOrderButton1()
- let button2 = MineOrderButton1()
- let button3 = MineOrderButton1()
-
- override func setupViews() {
- backgroundColor = .clear
- addSubviews([bgView])
- bgView.addSubviews([bgImgView2,bgImgView1,button1,button2,button3])
-
- bgImgView1.do { v in
- v.image = UIImage(named: "mine_order_bg1")
- }
- bgImgView2.do { v in
- v.image = UIImage(named: "mine_order_bg2")
- }
-
- }
- override func setupLayout() {
- bgView.snp.makeConstraints { make in
- make.edges.equalToSuperview()
- }
- bgImgView1.snp.makeConstraints { make in
- make.edges.equalToSuperview()
- }
- bgImgView2.snp.makeConstraints { make in
- make.right.equalToSuperview()
- make.top.equalToSuperview()
- make.width.equalTo(135)
- make.height.equalTo(48)
- }
- button1.snp.makeConstraints { make in
- make.left.equalToSuperview().inset(15)
- make.top.equalToSuperview().inset(15)
- make.width.equalTo(200)
- }
- }
-}
-class MineOrderButton1: BaseView {
- let icon = UIImageView()
- let titleLabel = UILabel()
- let valueLabel = UILabel()
-
-
-
- override func setupViews() {
- addSubviews([titleLabel,icon,valueLabel])
-
- icon.do { v in
- v.image = UIImage(named: "head")
- v.yc.setCornerRadius(27)
- v.backgroundColor = .black.withAlphaComponent(0.1)
- }
- titleLabel.do { (v) in
- v.textColor = .white
- v.font = .bold(16)
- v.textAlignment = .left
- v.text = "用户未登录"
- }
- valueLabel.do { (v) in
- v.textColor = .black.withAlphaComponent(0.6)
- v.font = .medium(14)
- v.textAlignment = .right
- v.text = "登录帐号后可查看ID"
- }
- }
-
- override func setupLayout() {
- icon.snp.makeConstraints { (m) in
- m.width.equalTo(32)
- m.height.equalTo(32)
- m.left.equalToSuperview().inset(15)
- m.top.equalToSuperview()
- m.bottom.equalToSuperview()
- }
- titleLabel.snp.makeConstraints { (m) in
- m.top.equalToSuperview().inset(5)
- m.left.equalTo(icon.snp.right).offset(15)
- }
- valueLabel.snp.makeConstraints { (m) in
- m.bottom.equalToSuperview().inset(5)
- m.left.equalTo(icon.snp.right).offset(15)
- }
- }
-}
+++ /dev/null
-//
-// MineUserInfoView.swift
-// ShenYin
-//
-// Created by liangshi on 2025/7/30.
-//
-
-import UIKit
-class MineUserInfoView: BaseView {
- let icon = UIImageView()
- let titleLabel = UILabel()
- let valueLabel = UILabel()
-
-
-
- override func setupViews() {
- addSubviews([titleLabel,icon,valueLabel])
-
- icon.do { v in
- v.image = UIImage(named: "head")
- v.yc.setCornerRadius(27)
- v.backgroundColor = .black.withAlphaComponent(0.1)
- }
- titleLabel.do { (v) in
- v.textColor = .rgb(0x121212)
- v.font = .bold(16)
- v.textAlignment = .left
- v.text = "用户未登录"
- }
- valueLabel.do { (v) in
- v.textColor = .rgb(0x999999)
- v.font = .medium(14)
- v.textAlignment = .right
- v.text = "登录帐号后可查看ID"
- }
- }
-
- override func setupLayout() {
- icon.snp.makeConstraints { (m) in
- m.width.equalTo(54)
- m.height.equalTo(54)
- m.left.equalToSuperview().inset(15)
- m.top.equalToSuperview()
- m.bottom.equalToSuperview()
- }
- titleLabel.snp.makeConstraints { (m) in
- m.top.equalToSuperview().inset(5)
- m.left.equalTo(icon.snp.right).offset(15)
- }
- valueLabel.snp.makeConstraints { (m) in
- m.bottom.equalToSuperview().inset(5)
- m.left.equalTo(icon.snp.right).offset(15)
- }
-
- }
-
-}
//
// Created by incar on 2024/1/3.
//
-
import UIKit
class MineVC: BaseVC{
let tableView = UITableView(frame: .zero, style: .plain)
- let list:[MineCellType] = [.user,.device,.userAgreement,.privacyPolicy,.language,.update,.feeback,.about]
+ let list:[MineCellType] = [.instructions,.update,.more,.feeback,.about]
override func viewDidLoad() {
super.viewDidLoad()
override func setupViews() {
self.navBar.title = "我的"
tableView.do { v in
- v.backgroundColor = .rgb(0xF7F7F7)
+ v.backgroundColor = .color(.bgColor)
v.delegate = self
v.dataSource = self
- v.rowHeight = 68
+ v.rowHeight = 52
+ v.sectionHeaderHeight = 52
v.separatorStyle = .none
v.register(MineCell.self, forCellReuseIdentifier: MineCell.reuseID)
- v.tableHeaderView = MineHeaderView(frame: CGRect(x: 0, y: 0, width: kScreenWid, height: 150))
+ v.tableHeaderView = MineHeaderView(frame: CGRect(x: 0, y: 0, width: kScreenWid, height: 266))
+
}
+
view.addSubview(tableView)
-
- let bar = MineNavBar(frame: navBar.frame)
- navBar.addSubview(bar)
-
-// let data = Data([0x48, 0x65, 0x6C, 0x6C, 0x6F])
-// let hexString = data.map { String(format: "%02hhx", $0) }.joined()
-// print(hexString)
}
override func setupLayout() {
tableView.snp.makeConstraints { make in
}
extension MineVC:UITableViewDelegate,UITableViewDataSource {
- func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
- return 60
- }
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return list.count
}
-
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = MineCell.cell(withTableView: tableView, indexPath: indexPath)
cell.type = list[indexPath.row]
+ let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
+ if indexPath.row == 0 {
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 8, height: 8))
+ }
+ else if indexPath.row == list.count - 1{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 8, height: 8))
+ }
+ else{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0))
+ }
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let data = list[indexPath.row]
switch data {
- case .user:
- App.shared.goToPage(AboutVC())
- case .device:
- App.shared.goToPage(DeviceInfoVC())
- case .userAgreement:
- App.shared.goToPage(AboutVC())
- case .privacyPolicy:
- App.shared.goToPage(AboutVC())
- case .language:
- App.shared.goToPage(LanguageVC())
+ case .instructions:
+ App.shared.goToPage(InstructionsVC())
case .update:
App.shared.goToPage(UpdateVC())
+ case .more:
+ App.shared.goToPage(MoreSetVC())
case .feeback:
App.shared.goToPage(FeekbackVC())
case .about:
--- /dev/null
+//
+// AreaVC.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/25.
+//
+
+import UIKit
+class AreaVC: BaseVC{
+ let tableView = UITableView(frame: .zero, style: .plain)
+ var list:[GenderType] = [.man,.female,]
+ var currentType = GenderType.man
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view.
+ }
+ override func setupViews() {
+ self.navBar.title = "性别"
+ tableView.do { v in
+ v.backgroundColor = .rgb(0xF7F7F7)
+ v.delegate = self
+ v.dataSource = self
+ v.rowHeight = 52
+ v.separatorStyle = .none
+ v.register(SelectCell.self, forCellReuseIdentifier: SelectCell.reuseID)
+ }
+ view.addSubviews([tableView])
+
+ }
+ override func setupLayout() {
+ tableView.snp.makeConstraints { make in
+ make.left.right.bottom.equalToSuperview()
+ make.top.equalTo(kNavBtm)
+ }
+ }
+ @objc func btnAction(){
+
+ }
+}
+
+extension AreaVC:UITableViewDelegate,UITableViewDataSource {
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return list.count
+ }
+
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = SelectCell.cell(withTableView: tableView, indexPath: indexPath)
+ cell.genderType = list[indexPath.row]
+ let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
+ if indexPath.row == 0 {
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 8, height: 8))
+ }
+ else if indexPath.row == list.count - 1{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 8, height: 8))
+ }
+ else{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0))
+ }
+ cell.selectedIcon.isHidden = cell.genderType != currentType
+ return cell
+ }
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+ let data = list[indexPath.row]
+ currentType = data
+ tableView.reloadData()
+ }
+}
case email
case thirdLogin
+
+ case update
+ case userAgreement
+ case privacyPolicy
+
+ case notice
+ case language
+
case deregister
var title:String{
case .thirdLogin:
return "第三方账号"
+ case .update:
+ return "检查更新"
+ case .userAgreement:
+ return "用户协议"
+ case .privacyPolicy:
+ return "隐私协议"
+
+ case .notice:
+ return "系统消息通知"
+ case .language:
+ return "语言设置"
case .deregister:
return "注销账号"
let bgView = UIView()
let titleLabel = UILabel()
let nextIcon = UIImageView()
+ let valueIcon = UIImageView()
+ let valueLabel = UILabel()
var type:CustomCellType = .area{
didSet{
titleLabel.text = type.title
+ valueIcon.isHidden = type != .avatar
+
+ if type == .nickName || type == .gender || type == .area {
+ valueLabel.isHidden = false
+ }
+ else{
+ valueLabel.isHidden = true
+ }
+ valueLabel.text = "123"
}
}
}
override func setupViews() {
contentView.addSubview(bgView)
- bgView.addSubviews([titleLabel,nextIcon])
+ bgView.addSubviews([titleLabel,nextIcon,valueIcon,valueLabel])
backgroundColor = .rgb(0xF7F7F7)
contentView.backgroundColor = .clear
v.font = .bold(14)
v.textAlignment = .left
}
-
+ valueIcon.do { v in
+ v.yc.setCornerRadius(24)
+ v.image = UIImage(named: "logo_1")
+ v.isHidden = true
+ }
nextIcon.image = UIImage(named: "arrow_next")
}
m.right.equalToSuperview().inset(15)
m.centerY.equalToSuperview()
}
+ valueIcon.snp.makeConstraints { (m) in
+ m.size.equalTo(24)
+ m.right.equalToSuperview().inset(38)
+ m.centerY.equalToSuperview()
+ }
+ valueLabel.snp.makeConstraints { (m) in
+ m.centerY.equalToSuperview()
+ m.right.equalToSuperview().inset(38)
+ m.height.equalToSuperview()
+ }
}
+
+
}
--- /dev/null
+//
+// CustomSectionHeader.swift
+// ShenYin
+//
+// Created by liangshi on 2025/7/31.
+//
+
+
+class CustomSectionHeader: BaseTableViewSetionHeader {
+ let titleLabel = UILabel()
+ override func setupViews() {
+ contentView.backgroundColor = .color(.bgColor)
+ contentView.addSubview(titleLabel)
+ titleLabel.do { (v) in
+ v.textColor = .black.withAlphaComponent(0.8)
+ v.font = .medium(16)
+ v.textAlignment = .left
+ }
+ }
+
+ override func setupLayout() {
+ titleLabel.snp.makeConstraints { (m) in
+ m.top.equalToSuperview().inset(10)
+ m.bottom.equalToSuperview()
+ m.left.equalToSuperview().inset(30)
+ }
+ }
+}
--- /dev/null
+//
+// GenderVC.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/25.
+//
+
+import UIKit
+class GenderVC: BaseVC{
+ let tableView = UITableView(frame: .zero, style: .plain)
+ var list:[GenderType] = [.man,.female,]
+ var currentType = GenderType.man
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view.
+ }
+ override func setupViews() {
+ self.navBar.title = "性别"
+ tableView.do { v in
+ v.backgroundColor = .rgb(0xF7F7F7)
+ v.delegate = self
+ v.dataSource = self
+ v.rowHeight = 52
+ v.separatorStyle = .none
+ v.register(SelectCell.self, forCellReuseIdentifier: SelectCell.reuseID)
+ }
+ view.addSubviews([tableView])
+
+ }
+ override func setupLayout() {
+ tableView.snp.makeConstraints { make in
+ make.left.right.bottom.equalToSuperview()
+ make.top.equalTo(kNavBtm)
+ }
+ }
+ @objc func btnAction(){
+
+ }
+}
+
+extension GenderVC:UITableViewDelegate,UITableViewDataSource {
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return list.count
+ }
+
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = SelectCell.cell(withTableView: tableView, indexPath: indexPath)
+ cell.genderType = list[indexPath.row]
+ let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
+ if indexPath.row == 0 {
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 8, height: 8))
+ }
+ else if indexPath.row == list.count - 1{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 8, height: 8))
+ }
+ else{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0))
+ }
+ cell.selectedIcon.isHidden = cell.genderType != currentType
+ return cell
+ }
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+ let data = list[indexPath.row]
+ currentType = data
+ tableView.reloadData()
+ }
+}
--- /dev/null
+//
+// NickNameVC.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/25.
+//
+
+import UIKit
+
+class NickNameVC:BaseVC{
+
+ let titleLabel = UILabel()
+ let phoneView = CustomInputView()
+ let loginBtn = CustomButton()
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ }
+ override func setupViews(){
+ self.navBar.title = "修改安全邮箱"
+ view.backgroundColor = .color(.bgColor)
+
+ titleLabel.do { v in
+ v.text = "请输入新的安全邮箱地址"
+ v.font = .medium(18)
+ v.textColor = .hexString("#121212")
+ }
+ phoneView.do { v in
+ v.textField.placeholder = "请输入邮箱地址"
+ }
+ loginBtn.set(title: "下一步",style: .theme1, target: self, action: #selector(loginAction))
+ view.addSubviews([titleLabel,phoneView,loginBtn])
+
+ }
+ override func setupLayout(){
+
+ titleLabel.snp.makeConstraints { make in
+ make.top.equalToSuperview().offset(kNavBtm + 30)
+ make.left.right.equalToSuperview().inset(36)
+ }
+ phoneView.snp.makeConstraints { make in
+ make.top.equalTo(titleLabel.snp.bottom).offset(16)
+ make.left.right.equalToSuperview().inset(36)
+ }
+
+ loginBtn.snp.makeConstraints { make in
+ make.top.equalTo(phoneView.snp.bottom).offset(40)
+ make.left.right.equalToSuperview().inset(51)
+ make.height.equalTo(55)
+ }
+
+ }
+
+}
+
+extension NickNameVC{
+
+ @objc func loginAction(){
+ guard let pwd1 = phoneView.textField.value else{
+ YLprogressHUD.showAutoHiden("请输入邮箱地址")
+ return
+ }
+ // YLprogressHUD.showLoading()
+ // LoginVM.login(phone: phone, code: code) {[weak self] result in
+ // if result.isSuccess{
+ // YLprogressHUD.showSuccess {
+ // self?.view.window?.rootViewController = BaseTC()
+ // }
+ // }
+ // YLprogressHUD.showAutoHiden(result.msg)
+ // }
+ }
+}
+////
+//// UserInfoCell.swift
+//// ShenYin
+////
+//// Created by liangshi on 2025/7/30.
+////
//
-// UserInfoCell.swift
-// ShenYin
+//import UIKit
//
-// Created by liangshi on 2025/7/30.
+//public enum UserInfoCellType: Int {
+// case avatar
+// case nickName
+// case gender
+// case area
+//
+//
+// case account
+// case phone
+// case email
+// case thirdLogin
+//
+// case deregister
+//
+// var title:String{
+// switch self {
+// case .avatar:
+// return "头像"
+// case .nickName:
+// return "昵称"
+// case .gender:
+// return "性别"
+// case .area:
+// return "国家与地区"
+//
+// case .account:
+// return "账号密码"
+// case .phone:
+// return "安全手机"
+// case .email:
+// return "安全邮箱"
+// case .thirdLogin:
+// return "第三方账号"
+//
+//
+// case .deregister:
+// return "注销账号"
+// }
+// }
+//
+//}
+//
+//
+//class UserInfoCell: BaseTableViewCell {
+// let bgView = UIView()
+// let icon = UIImageView()
+// let titleLabel = UILabel()
+// let valueLabel = UILabel()
+// let nextIcon = UIImageView()
+//
+// var type:UserInfoCellType = .avatar{
+// didSet{
+// titleLabel.text = type.title
+// valueLabel.text = "1111"
+// }
+// }
+//
+// override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
+// super.init(style: style, reuseIdentifier: reuseIdentifier)
+// }
+//
+// required init?(coder: NSCoder) {
+// fatalError("init(coder:) has not been implemented")
+// }
+// override func setupViews() {
+// contentView.addSubview(bgView)
+// bgView.addSubviews([titleLabel,icon,valueLabel,nextIcon])
+//
+// backgroundColor = .clear
+// contentView.backgroundColor = .clear
+// selectionStyle = .none
+// bgView.do { v in
+// v.backgroundColor = UIColor.black.withAlphaComponent(0.04)
+// v.layer.borderColor = UIColor.black.withAlphaComponent(0.1).cgColor
+// v.layer.borderWidth = 0.5
+// v.layer.cornerRadius = 12
+// v.layer.masksToBounds = true
+// }
+// titleLabel.do { (v) in
+// v.textColor = .white
+// v.font = .medium(16)
+// v.textAlignment = .left
+// }
+// valueLabel.do { (v) in
+// v.textColor = .black.withAlphaComponent(0.8)
+// v.font = .medium(14)
+// v.textAlignment = .right
+// }
+// nextIcon.image = UIImage(named: "arrow_next")
+// }
+//
+// override func setupLayout() {
+// bgView.snp.makeConstraints { (m) in
+// m.left.right.equalToSuperview().inset(15)
+// m.top.equalToSuperview().inset(6)
+// m.bottom.equalToSuperview().inset(6)
+// m.height.equalTo(52)
+// }
+// nextIcon.snp.makeConstraints { (m) in
+// m.width.equalTo(20)
+// m.height.equalTo(20)
+// m.right.equalToSuperview().inset(15)
+// m.centerY.equalToSuperview()
+// }
+// icon.snp.makeConstraints { (m) in
+// m.width.equalTo(46)
+// m.height.equalTo(46)
+// m.right.equalToSuperview().inset(40)
+// m.centerY.equalToSuperview()
+// }
+// titleLabel.snp.makeConstraints { (m) in
+// m.centerY.equalTo(icon)
+// m.left.equalToSuperview().inset(15)
+// m.height.equalToSuperview()
+// }
+// valueLabel.snp.makeConstraints { (m) in
+// m.centerY.equalTo(icon)
+// m.right.equalToSuperview().inset(40)
+// m.height.equalToSuperview()
+// }
+//
+// }
+//}
+//
+//class UserInfoImageCell: BaseTableViewCell {
+// let bgView = UIView()
+// let icon = UIImageView()
+// let titleLabel = UILabel()
+// let nextIcon = UIImageView()
+// let imgPicker = ImagePickerManager()
+//
+// override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
+// super.init(style: style, reuseIdentifier: reuseIdentifier)
+// }
+//
+// required init?(coder: NSCoder) {
+// fatalError("init(coder:) has not been implemented")
+// }
+// override func setupViews() {
+// contentView.addSubview(bgView)
+// bgView.addSubviews([titleLabel,icon,nextIcon])
+//
+// backgroundColor = .clear
+// contentView.backgroundColor = .clear
+// selectionStyle = .none
+// bgView.do { v in
+// v.backgroundColor = UIColor.black.withAlphaComponent(0.04)
+// v.layer.borderColor = UIColor.black.withAlphaComponent(0.1).cgColor
+// v.layer.borderWidth = 0.5
+// v.layer.cornerRadius = 12
+// v.layer.masksToBounds = true
+// v.yc.addTap(target: self, action:#selector(pickImageAction ))
+// }
+// titleLabel.do { (v) in
+// v.textColor = .white
+// v.font = .medium(16)
+// v.textAlignment = .left
+// v.text = "头像"
+// }
+// icon.do { v in
+// v.yc.setCornerRadius(23)
+// v.backgroundColor = .black.withAlphaComponent(0.5)
+// }
+// nextIcon.image = UIImage(named: "arrow_next")
+// }
+//
+// override func setupLayout() {
+// bgView.snp.makeConstraints { (m) in
+// m.left.right.equalToSuperview().inset(15)
+// m.top.equalToSuperview().inset(6)
+// m.bottom.equalToSuperview().inset(6)
+// m.height.equalTo(72)
+// }
+// nextIcon.snp.makeConstraints { (m) in
+// m.width.equalTo(20)
+// m.height.equalTo(20)
+// m.right.equalToSuperview().inset(15)
+// m.centerY.equalToSuperview()
+// }
+// icon.snp.makeConstraints { (m) in
+// m.width.equalTo(46)
+// m.height.equalTo(46)
+// m.right.equalToSuperview().inset(40)
+// m.centerY.equalToSuperview()
+// }
+// titleLabel.snp.makeConstraints { (m) in
+// m.centerY.equalTo(icon)
+// m.left.equalToSuperview().inset(15)
+// m.height.equalToSuperview()
+// }
+//
+// }
+//
+// @objc func pickImageAction() -> Void {
+// imgPicker.showImagePicker(from: App.shared.topVC()) {[weak self] image in
+// guard let self = self else { return }
+// icon.image = image
+// }
+// }
+//}
//
-
-import UIKit
-
-public enum UserInfoCellType: Int {
- case avatar
- case nickName
- case gender
- case area
-
-
- case account
- case phone
- case email
- case thirdLogin
-
- case deregister
-
- var title:String{
- switch self {
- case .avatar:
- return "头像"
- case .nickName:
- return "昵称"
- case .gender:
- return "性别"
- case .area:
- return "国家与地区"
-
- case .account:
- return "账号密码"
- case .phone:
- return "安全手机"
- case .email:
- return "安全邮箱"
- case .thirdLogin:
- return "第三方账号"
-
-
- case .deregister:
- return "注销账号"
- }
- }
-
-}
-
-
-class UserInfoCell: BaseTableViewCell {
- let bgView = UIView()
- let icon = UIImageView()
- let titleLabel = UILabel()
- let valueLabel = UILabel()
- let nextIcon = UIImageView()
-
- var type:UserInfoCellType = .avatar{
- didSet{
- titleLabel.text = type.title
- valueLabel.text = "1111"
- }
- }
-
- override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
- super.init(style: style, reuseIdentifier: reuseIdentifier)
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- override func setupViews() {
- contentView.addSubview(bgView)
- bgView.addSubviews([titleLabel,icon,valueLabel,nextIcon])
-
- backgroundColor = .clear
- contentView.backgroundColor = .clear
- selectionStyle = .none
- bgView.do { v in
- v.backgroundColor = UIColor.black.withAlphaComponent(0.04)
- v.layer.borderColor = UIColor.black.withAlphaComponent(0.1).cgColor
- v.layer.borderWidth = 0.5
- v.layer.cornerRadius = 12
- v.layer.masksToBounds = true
- }
- titleLabel.do { (v) in
- v.textColor = .white
- v.font = .medium(16)
- v.textAlignment = .left
- }
- valueLabel.do { (v) in
- v.textColor = .black.withAlphaComponent(0.8)
- v.font = .medium(14)
- v.textAlignment = .right
- }
- nextIcon.image = UIImage(named: "arrow_next")
- }
-
- override func setupLayout() {
- bgView.snp.makeConstraints { (m) in
- m.left.right.equalToSuperview().inset(15)
- m.top.equalToSuperview().inset(6)
- m.bottom.equalToSuperview().inset(6)
- m.height.equalTo(52)
- }
- nextIcon.snp.makeConstraints { (m) in
- m.width.equalTo(20)
- m.height.equalTo(20)
- m.right.equalToSuperview().inset(15)
- m.centerY.equalToSuperview()
- }
- icon.snp.makeConstraints { (m) in
- m.width.equalTo(46)
- m.height.equalTo(46)
- m.right.equalToSuperview().inset(40)
- m.centerY.equalToSuperview()
- }
- titleLabel.snp.makeConstraints { (m) in
- m.centerY.equalTo(icon)
- m.left.equalToSuperview().inset(15)
- m.height.equalToSuperview()
- }
- valueLabel.snp.makeConstraints { (m) in
- m.centerY.equalTo(icon)
- m.right.equalToSuperview().inset(40)
- m.height.equalToSuperview()
- }
-
- }
-}
-
-class UserInfoImageCell: BaseTableViewCell {
- let bgView = UIView()
- let icon = UIImageView()
- let titleLabel = UILabel()
- let nextIcon = UIImageView()
- let imgPicker = ImagePickerManager()
-
- override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
- super.init(style: style, reuseIdentifier: reuseIdentifier)
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- override func setupViews() {
- contentView.addSubview(bgView)
- bgView.addSubviews([titleLabel,icon,nextIcon])
-
- backgroundColor = .clear
- contentView.backgroundColor = .clear
- selectionStyle = .none
- bgView.do { v in
- v.backgroundColor = UIColor.black.withAlphaComponent(0.04)
- v.layer.borderColor = UIColor.black.withAlphaComponent(0.1).cgColor
- v.layer.borderWidth = 0.5
- v.layer.cornerRadius = 12
- v.layer.masksToBounds = true
- v.yc.addTap(target: self, action:#selector(pickImageAction ))
- }
- titleLabel.do { (v) in
- v.textColor = .white
- v.font = .medium(16)
- v.textAlignment = .left
- v.text = "头像"
- }
- icon.do { v in
- v.yc.setCornerRadius(23)
- v.backgroundColor = .black.withAlphaComponent(0.5)
- }
- nextIcon.image = UIImage(named: "arrow_next")
- }
-
- override func setupLayout() {
- bgView.snp.makeConstraints { (m) in
- m.left.right.equalToSuperview().inset(15)
- m.top.equalToSuperview().inset(6)
- m.bottom.equalToSuperview().inset(6)
- m.height.equalTo(72)
- }
- nextIcon.snp.makeConstraints { (m) in
- m.width.equalTo(20)
- m.height.equalTo(20)
- m.right.equalToSuperview().inset(15)
- m.centerY.equalToSuperview()
- }
- icon.snp.makeConstraints { (m) in
- m.width.equalTo(46)
- m.height.equalTo(46)
- m.right.equalToSuperview().inset(40)
- m.centerY.equalToSuperview()
- }
- titleLabel.snp.makeConstraints { (m) in
- m.centerY.equalTo(icon)
- m.left.equalToSuperview().inset(15)
- m.height.equalToSuperview()
- }
-
- }
-
- @objc func pickImageAction() -> Void {
- imgPicker.showImagePicker(from: App.shared.topVC()) {[weak self] image in
- guard let self = self else { return }
- icon.image = image
- }
- }
-}
-
-////
-//// UserInfoVC.swift
-//// ShenYin
-////
-//// Created by liangshi on 2025/7/30.
-////
//
-//import UIKit
-//class UserInfoVC: BaseVC{
-// let tableView = UITableView(frame: .zero, style: .plain)
-// let list:[(title:String,list:[UserInfoCellType])] = [("编辑资料",[.avatar,.nickName,.gender]),("账号与安全",[.phone,.password,.deregister])]
-//
-// override func viewDidLoad() {
-// super.viewDidLoad()
-// // Do any additional setup after loading the view.
-// }
-// override func setupViews() {
-// self.navBar.title = "用户信息"
-// tableView.do { v in
-// v.backgroundColor = .color(.bgColor)
-// v.delegate = self
-// v.dataSource = self
-// v.estimatedRowHeight = 52
-// v.sectionHeaderHeight = 52
-// v.sectionFooterHeight = 0.1
-// v.register(UserInfoCell.self, forCellReuseIdentifier: UserInfoCell.reuseID)
-// v.register(UserInfoImageCell.self, forCellReuseIdentifier: UserInfoImageCell.reuseID)
-//
-// v.register(UserInfoSectionHeader.self, forHeaderFooterViewReuseIdentifier: UserInfoSectionHeader.reuseID)
-// v.register(BaseTableViewSetionHeader.self, forHeaderFooterViewReuseIdentifier: BaseTableViewSetionHeader.reuseID)
-// }
-//
-// let footView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWid, height: 200))
-// let btn = CustomButton(frame: CGRect(x: 15, y: 80, width: kScreenWid - 30, height: 52))
-// btn.set(title: "退出登录", target: self, action: #selector(logoutAction))
-// footView.addSubview(btn)
-// tableView.tableFooterView = footView
-//
-// view.addSubview(tableView)
-// }
-// override func setupLayout() {
-// tableView.snp.makeConstraints { make in
-// make.left.right.bottom.equalToSuperview()
-// make.top.equalTo(kNavBtm)
-// }
-// }
-//}
+// UserInfoVC.swift
+// ShenYin
//
-//extension UserInfoVC:UITableViewDelegate,UITableViewDataSource {
-// func numberOfSections(in tableView: UITableView) -> Int {
-// return list.count
-// }
-// func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-// return list[section].list.count
-// }
-// func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
-// let view = UserInfoSectionHeader.header(withTableView: tableView)
-// view.titleLabel.text = list[section].title
-// return view
-// }
-// func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
-// let type = list[indexPath.section].list[indexPath.row]
-// if type == .avatar {
-// let cell = UserInfoImageCell.cell(withTableView: tableView, indexPath: indexPath)
-// return cell
-// }
-// else{
-// let cell = UserInfoCell.cell(withTableView: tableView, indexPath: indexPath)
-// cell.type = type
-// return cell
-// }
-// }
-// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
-// let data = list[indexPath.section].list[indexPath.row]
-//
-// }
-//}
+// Created by liangshi on 2025/7/30.
//
-//extension UserInfoVC{
-// @objc func logoutAction(){
-//
-// }
-//}
+
+import UIKit
+class UserInfoVC: BaseVC{
+ let tableView = UITableView(frame: .zero, style: .plain)
+ let list:[CustomCellType] = [.avatar,.nickName,.gender,.area]
+ let imgPicker = ImagePickerManager()
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view.
+ }
+ override func setupViews() {
+ self.navBar.title = "个人资料"
+ tableView.do { v in
+ v.backgroundColor = .color(.bgColor)
+ v.delegate = self
+ v.dataSource = self
+ v.rowHeight = 52
+ v.sectionHeaderHeight = 52
+ v.separatorStyle = .none
+ v.register(CustomCell1.self, forCellReuseIdentifier: CustomCell1.reuseID)
+ }
+ view.addSubview(tableView)
+ }
+ override func setupLayout() {
+ tableView.snp.makeConstraints { make in
+ make.left.right.bottom.equalToSuperview()
+ make.top.equalTo(kNavBtm)
+ }
+ }
+}
+
+ extension UserInfoVC:UITableViewDelegate,UITableViewDataSource {
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ return list.count
+ }
+
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = CustomCell1.cell(withTableView: tableView, indexPath: indexPath)
+ cell.type = list[indexPath.row]
+ let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
+ if indexPath.row == 0 {
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 8, height: 8))
+ }
+ else if indexPath.row == list.count - 1{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 8, height: 8))
+ }
+ else{
+ cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0))
+ }
+ return cell
+ }
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+ let data = list[indexPath.row]
+ switch data {
+ case .avatar:
+ pickImageAction()
+ case .nickName:
+ App.shared.goToPage(NickNameVC())
+ case .gender:
+ App.shared.goToPage(GenderVC())
+ case .area:
+ App.shared.goToPage(AreaVC())
+ break
+ default:
+ break
+ }
+ }
+ }
+
+
+extension UserInfoVC{
+ @objc func pickImageAction() -> Void {
+ imgPicker.showImagePicker(from: App.shared.topVC()) {[weak self] image in
+ guard let self = self else { return }
+// icon.image = image
+ }
+ }
+}
return "自由通话"
}
}
+ var img:String{
+ switch self {
+ case .anc:
+ return "mode_control_anc"
+ case .environment:
+ return "mode_control_environment"
+ case .free:
+ return "mode_control_call"
+ }
+ }
}
class ModeControView: BaseView {
}
class ItemView: BaseView {
+ let imgBg = UIView()
let icon = UIImageView()
let titleLabel = UILabel()
var type = ModeContolType.anc{
didSet{
titleLabel.text = type.title
+ icon.image = UIImage(named: type.img)
}
}
var isSelected:Bool = false{
didSet{
if isSelected {
titleLabel.textColor = .color(.theme)
+ imgBg.backgroundColor = .color(.theme)
}
else{
titleLabel.textColor = .rgb(0x666666)
+ imgBg.backgroundColor = .rgb(0xF7F7F7)
}
}
}
override func setupViews() {
- addSubviews([icon,titleLabel])
- icon.do { v in
+ addSubviews([imgBg,icon,titleLabel])
+
+ imgBg.do { v in
v.backgroundColor = .rgb(0xF7F7F7)
v.yc.setCornerRadius(8)
+ v.contentMode = .center
}
titleLabel.do { (v) in
v.textColor = .rgb(0x666666)
}
override func setupLayout() {
- icon.snp.makeConstraints { make in
+ imgBg.snp.makeConstraints { make in
make.width.equalTo(80)
make.height.equalTo(43)
make.left.top.equalToSuperview()
}
+ icon.snp.makeConstraints { make in
+ make.width.equalTo(38)
+ make.height.equalTo(19)
+ make.center.equalTo(imgBg)
+ }
titleLabel.snp.makeConstraints { make in
make.centerX.equalToSuperview()
- make.top.equalTo(icon.snp.bottom).offset(10)
+ make.top.equalTo(imgBg.snp.bottom).offset(10)
}
}
}
case classic
case rock
case jazz
- case eq
+ case custom
var title:String{
switch self {
case .classic:
return "经典"
case .rock:
+ return "摇滚"
+ case .jazz:
return "爵士"
+ case .custom:
+ return "自定义"
+ }
+ }
+ var img:String{
+ switch self {
+ case .normal:
+ return "mode_normal"
+ case .fashion:
+ return "mode_fashion"
+ case .classic:
+ return "mode_classic"
+ case .rock:
+ return "mode_rock"
case .jazz:
- return "摇滚"
- case .eq:
- return "EQ调音"
+ return "mode_jazz"
+ case .custom:
+ return "mode_custom"
}
}
}
class ModeEffectsView: BaseView {
let titleLabel = UILabel()
- var list:[ModeEffectsType] = [.normal,.fashion,.classic,.rock,.jazz,.eq]
+ var list:[ModeEffectsType] = [.normal,.fashion,.classic,.rock,.jazz,.custom]
var itemViews = [ItemView]()
override func setupViews() {
titleLabel.do { (v) in
v.textColor = .rgb(0x121212)
v.font = .bold(14)
- v.text = "个性化音效"
+ v.text = "EQ调音"
}
let s = 11.0
var type = ModeEffectsType.fashion{
didSet{
titleLabel.text = type.title
+ icon.image = UIImage(named:type.img)
+
}
}
override func setupViews() {
addSubviews([icon,titleLabel])
icon.do { v in
- v.backgroundColor = .black
v.yc.setCornerRadius(8)
}
titleLabel.do { (v) in
import UIKit
class BleScanVC: BaseVC{
let tableView = UITableView(frame: .zero, style: .plain)
- let list:[MineCellType] = [.user,.device,.userAgreement,.privacyPolicy,.language,.update,.feeback,.about]
+ let list:[MineCellType] = []
override func viewDidLoad() {
super.viewDidLoad()
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = BleScanCell.cell(withTableView: tableView, indexPath: indexPath)
- cell.type = list[indexPath.row]
+// cell.type = list[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let icon = UIImageView()
let titleLabel = UILabel()
- var type:MineCellType = .user{
- didSet{
- titleLabel.text = type.title
- }
- }
+// var type:MineCellType = .user{
+// didSet{
+// titleLabel.text = type.title
+// }
+// }
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
import JXSegmentedView
import MJRefresh
-public enum SleepListType:Int {
- case all = 0
- case school = 1
- case studycar = 2
- case exam = 3
- case system = 4
-
- var name:String{
- switch self {
- case .all:
- return "全部"
- case .studycar:
- return "学车提醒"
- case .school:
- return "驾校通知"
- case .system:
- return "系统提醒"
- case .exam:
- return "考试通知"
- }
- }
- var icon: UIImage? {
- switch self {
- case .all: return UIImage(named: "message_exam")
- case .studycar: return UIImage(named: "message_oclock")
- case .school: return UIImage(named: "message_notice")
- case .system: return UIImage(named: "message_exam")
- case .exam: return UIImage(named: "message_exam")
- }
- }
-}
-
class SleepListView: BaseView,UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout {
private var collectionView:UICollectionView!
- init(selectType type:SleepListType){
+ init(selectType type:Int){
super.init(frame: .zero)
// setupLayout()
// setupStyle()
import JXSegmentedView
class SleepVC: BaseVC {
- private var titles = [SleepListType.all,SleepListType.school,SleepListType.studycar,SleepListType.exam]
+ private var titles = ["专注","旋律","自然","都市","冥想"]
private let segmentedDataSource = JXSegmentedTitleDataSource()
private let segmentedView = JXSegmentedView()
private lazy var listContainerView: JXSegmentedListContainerView! = {
segmentedDataSource.isTitleStrokeWidthEnabled = true
segmentedDataSource.isItemSpacingAverageEnabled = true
segmentedDataSource.isTitleColorGradientEnabled = true
- segmentedDataSource.titles = titles.map{"\($0.name)"}
+// segmentedDataSource.titles = titles.map{"\($0.name)"}
+ segmentedDataSource.titles = titles
segmentedView.backgroundColor = .clear
//配置指示器
}
func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate {
- let dele = SleepListView(selectType: titles[index])
+// let dele = SleepListView(selectType: titles[index])
+ let dele = SleepListView(selectType: index)
+
// dele.popToRoot = { [unowned self] in
// navigationController?.popToRootViewController(animated: true)
// }
--- /dev/null
+//
+// Untitled.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/26.
+//
+
+class BrokenLineView: UIView {
+ override func draw(_ rect: CGRect) {
+ super.draw(rect)
+ let path = UIBezierPath()
+ let lineWidth: CGFloat = 0.5
+ let dashLength: CGFloat = 5.0
+ let spaceLength: CGFloat = 3.0
+ let startPoint = CGPoint(x: 0, y: bounds.midY)
+ let endPoint = CGPoint(x: bounds.width, y: bounds.midY)
+ path.move(to: startPoint)
+ path.addLine(to: endPoint)
+ let shapeLayer = CAShapeLayer()
+ shapeLayer.path = path.cgPath
+ shapeLayer.strokeColor = UIColor.hexString("#93C6EC").cgColor
+ shapeLayer.fillColor = UIColor.clear.cgColor
+ shapeLayer.lineWidth = lineWidth
+ shapeLayer.lineDashPattern = [NSNumber(value: dashLength), NSNumber(value: spaceLength)]
+ layer.addSublayer(shapeLayer)
+ }
+}
enum CustomButtonStyle:Int{
case theme1
case theme2
+ case theme3
case custom
}
setTitleColor(.white, for: .normal)
backgroundColor = UIColor.color(.theme)
}
+ if style == .theme3 {
+ setTitleColor(.hexString("#121212"), for: .normal)
+ backgroundColor = UIColor.white
+ titleLabel?.font = .regular(14)
+ }
else{
setTitleColor(.color(.theme), for: .normal)
backgroundColor = .clear
--- /dev/null
+//
+// SendToolBar.swift
+// ShenYin
+//
+// Created by liangshi on 2025/8/26.
+//
+
+@objc protocol SendToolBarDelegate {
+ func sendToolBar(_ toolBar:SendToolBar,_ text:String)
+}
+
+class SendToolBar:UIView{
+ let bgView = UIView()
+ let textField = UITextField()
+ let sendBtn = UIButton()
+
+ weak var delegate:SendToolBarDelegate?
+
+ override init(frame: CGRect) {
+ super.init(frame: frame)
+ backgroundColor = .clear
+
+ bgView.do { v in
+ v.yc.setCornerRadius(12)
+ v.backgroundColor = .white
+ }
+
+ sendBtn.setImage(UIImage(named: "send_icon"), for: .normal)
+ sendBtn.addTarget(self, action: #selector(sendAction), for: .touchUpInside)
+
+ textField.do { v in
+ v.backgroundColor = .clear
+ v.placeholder = "请输入文字"
+ }
+
+ addSubview(bgView)
+ bgView.addSubview(sendBtn)
+ bgView.addSubview(textField)
+
+ bgView.snp.makeConstraints { make in
+ make.left.right.equalToSuperview().inset(18)
+ make.top.bottom.equalToSuperview()
+ }
+ sendBtn.snp.makeConstraints { make in
+ make.width.equalTo(52)
+ make.height.equalTo(52)
+ make.centerY.equalToSuperview()
+ make.right.equalToSuperview().inset(10)
+ }
+ textField.snp.makeConstraints { make in
+ make.left.equalToSuperview().inset(10)
+ make.top.bottom.equalToSuperview()
+ make.right.equalTo(sendBtn.snp.left).offset(-10)
+ }
+ }
+
+
+ required init?(coder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ @objc func sendAction(){
+ if let text = textField.text {
+ self.delegate?.sendToolBar(self,text)
+ }
+ }
+
+}
+