Commit e98cdb89 authored by Steven杜宇's avatar Steven杜宇

Merge branch 'develop' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS into develop

# Conflicts:
#	galaxy/galaxy.xcodeproj/project.pbxproj
#	galaxy/galaxy/Modules/Login(登录)/V/验证码输入框/YHSmsCodeInputView.swift
#	galaxy/galaxy/Modules/Login(登录)/V/验证码输入框/YNSmsCodeView.swift
parents 3e94e17c 9287b8ce
......@@ -14,8 +14,9 @@ target 'galaxy' do
#图片加载
pod 'Kingfisher','7.10.1'
#异步编程框架
pod 'RxSwift','6.6.0'
pod 'RxCocoa','6.6.0'
# pod 'RxSwift','6.6.0'
# pod 'RxCocoa','6.6.0'
pod 'RxAlamofire','6.1.1'
#数据存储
pod 'SwiftyUserDefaults','5.3.0'
#数据加、解密
......@@ -55,11 +56,17 @@ target 'galaxy' do
pod 'DeviceKit', '5.1.0'
#骨架图
pod 'SkeletonView','1.30.4'
#导航栏、手势
pod 'GKNavigationBarSwift','1.6.5'
end
# #数据模型转换
pod 'HandyJSON','5.0.2'
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 13.0
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
end
end
end
end
This diff is collapsed.
......@@ -8,6 +8,7 @@
import UIKit
import ESTabBarController_swift
import IQKeyboardManagerSwift
import SmartCodable
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
......@@ -49,10 +50,10 @@ extension AppDelegate {
//2、一键登录初始化
// TXCommonHandler.sharedInstance().setAuthSDKInfo(BsConstant.kAliOnePressPhoneLoginKey)
// TXCommonHandler.sharedInstance().setAuthSDKInfo(BsConstant.kAliOnePressPhoneLoginKey)
//3.微信登录初始化
// BsWxLoginManager.shared.doWxInit()
// BsWxLoginManager.shared.doWxInit()
//4.
IQKeyboardManager.shared.enable = true
......@@ -60,7 +61,7 @@ extension AppDelegate {
IQKeyboardManager.shared.shouldResignOnTouchOutside = true // 控制点击背景是否收起键盘
//webView 预加载
// BsWebViewPreloadManager.share.addPreloadingView()
// BsWebViewPreloadManager.share.addPreloadingView()
//
customAppearance()
......@@ -74,7 +75,7 @@ extension AppDelegate {
//1.设置主窗口
private func setupRootVC() {
let tabBarController = YHTabBarViewController()
let v1 = YHNavigationController(rootViewController: YHHomeViewController())
let v1 = YHNavigationController(rootViewController: YHIntelligentServiceViewController())
let v2 = YHNavigationController(rootViewController:YHMyViewController())
v1.tabBarItem = ESTabBarItem.init(YHBasicContentView(),title: "智慧服务", image: UIImage(named: "home"), selectedImage: UIImage(named: "home_1"))
......@@ -83,10 +84,18 @@ extension AppDelegate {
tabBarController.viewControllers = [v1, v2]
tabBarController.tabBar.backgroundColor = .white
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = tabBarController
window?.makeKeyAndVisible()
window?.backgroundColor = .white
//处理数据解析
#if DEBUG
SmartConfig.debugMode = .verbose
#else
SmartConfig.debugMode = .none
#endif
}
}
......
{
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "back_entity_icon@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "back_entity_icon@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "icon/24/back@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "icon/24/back@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "nav_share_icon@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "nav_share_icon@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
......@@ -26,7 +26,7 @@ class YHBaseViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.bs_setupLeftButton()
// self.bs_setupLeftButton()
//0
setupNavigationAttributed()
......
......@@ -21,7 +21,7 @@ class YHNavigationController: UINavigationController {
override func pushViewController(_ viewController: UIViewController, animated: Bool) {
// 隐藏要push的控制器的tabbar
if animated == true {
if viewControllers.count > 0 {
viewController.hidesBottomBarWhenPushed = true
}
super.pushViewController(viewController, animated: animated)
......
......@@ -13,7 +13,7 @@ class YHTabBarViewController: ESTabBarController {
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.shadowImage = UIImage()
// self.tabBar.shadowImage = UIImage()
self.tabBar.backgroundImage = UIImage()
// NotificationCenter.default.addObserver(self, selector: #selector(hideTabBar), name: BsConstant.BsNotification.tabBarHideNotification, object: nil)
......
//
// BaseModel.swift
// DouYuUI
//
// Created by davidhuang on 2022/8/15.
// Copyright © 2022 davidhuang. All rights reserved.
//
import UIKit
import HandyJSON
// MARK: - JSon解析模型的基类
class BsBaseModel: HandyJSON {
var data : Any?
var errorCode : Int = -1
var errorMessage : String = ""
var success : Bool = false
// MARK: - 使用 HandyJSON 进行解析
required init() {}
}
......@@ -11,14 +11,11 @@ import UIKit
let APP_NAME = Bundle.main.infoDictionary!["CFBundleName"] as! String
func YHLOG<T>(message:T,file:String = #file,funcName:String = #function,lineName:Int = #line){
//这个DEBUG 是一个debug时候的一个flag需要自己去xcode设置项设置。
#if DEBUG
#if DEBUG
let flieName = (file as NSString).lastPathComponent
print("\(APP_NAME)/\(flieName)/\(funcName)/\(lineName):\(message)")
#endif
#endif
}
///屏幕宽度
......
//
// Array+Extension.swift
// galaxy
//
// Created by davidhuangA on 2023/12/28.
// Copyright © 2023 www.davidhuang.com. All rights reserved.
//
import Foundation
extension Array {
/// 数组转json字符串
func yh_toJSONString() -> String? {
if (!JSONSerialization.isValidJSONObject(self)) {
return nil
}
do {
let data = try JSONSerialization.data(withJSONObject: self, options: [])
let json = String(data: data, encoding: String.Encoding.utf8)
return json
} catch {
return nil
}
}
}
//
// Date-Extension.swift
// DouYuUI
//
// Created by davidhuang on 2022/8/11.
// Copyright © 2022 davidhuang. All rights reserved.
//
import UIKit
extension Date {
static func getCurrentDate() -> String {
let now = Int(Date.timeIntervalSinceReferenceDate)
return "\(now)"
}
init(_ dateString: String, dateFormat: String = "yyyy-MM-dd") {
let df = DateFormatter()
df.dateFormat = dateFormat
let date = df.date(from: dateString)!
self.init(timeInterval: 0, since: date)
}
}
//
// Dictionary+Extension.swift
// galaxy
//
// Created by davidhuangA on 2023/12/28.
// Copyright © 2023 www.davidhuang.com. All rights reserved.
//
import Foundation
extension Dictionary {
/// 字典转Json字符串
func yh_toJSONString() -> String? {
if (!JSONSerialization.isValidJSONObject(self)) {
print("无法解析出JSONString")
return nil
}
do {
let data = try JSONSerialization.data(withJSONObject: self, options: [])
let json = String(data: data, encoding: String.Encoding.utf8)
return json
} catch {
return nil
}
}
}
......@@ -7,6 +7,30 @@
//
import UIKit
extension String {
/// JSONString转换为字典
func toDictionary() -> Dictionary<String, Any>? {
guard let jsonData:Data = data(using: .utf8) else { return nil }
if let dict = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) {
if let temp = dict as? Dictionary<String, Any> {
return temp
}
}
return nil
}
/// JSONString转换为数组
func toArray() -> Array<Any>? {
guard let jsonData:Data = data(using: .utf8) else { return nil }
if let array = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) {
if let temp = array as? Array<Any> {
return temp
}
}
return nil
}
}
extension String {
// MARK: - 拨打电话
......
......@@ -10,7 +10,7 @@ import UIKit
extension UIApplication {
func bsKeyWindow() -> UIWindow? {
func yhKeyWindow() -> UIWindow? {
var originalKeyWindow: UIWindow?
#if swift(>=5.1)
if #available(iOS 13, *) {
......
......@@ -10,11 +10,11 @@ import UIKit
extension UIFont {
// MARK: - 苹果字体
static func PFSCR(ofSize size : CGFloat = 15) -> UIFont {
class func PFSCR(ofSize size : CGFloat = 15) -> UIFont {
return UIFont(name: "PingFangSC-Regular", size: size)!
}
static func PFSCM(ofSize size : CGFloat = 15) -> UIFont {
class func PFSCM(ofSize size : CGFloat = 15) -> UIFont {
return UIFont(name: "PingFangSC-Medium", size: size)!
}
......
//
// UIView-Extension.swift
// BaiSiSMApp
//
// Created by davidhuang on 2022/10/16.
// Copyright © 2022 www.davidhuang.com. All rights reserved.
//
import UIKit
extension UIView {
// MARK: - 旋转
func rotate( begin : Bool = true) {
if begin == true {
let rotation : CABasicAnimation = CABasicAnimation(keyPath:"transform.rotation.z")
rotation.toValue = NSNumber(value: Double.pi * 2)
rotation.duration = 3
rotation.isCumulative = true
rotation.repeatCount = Float.greatestFiniteMagnitude
rotation.fillMode = CAMediaTimingFillMode(rawValue: "forwards")
layer.add(rotation, forKey:"rotationAnimation")
} else {
layer.removeAllAnimations()
}
}
// MARK: - 获取当前UIview 所在的 UIViewController
func getFirstViewController()->UIViewController?{
for view in sequence(first: self.superview, next: {$0?.superview}){
if let responder = view?.next{
if responder.isKind(of: UIViewController.self){
return responder as? UIViewController
}
}
}
return nil
}
// MARK: - UIView 晃动效果
public func shake2(direction:ShakeDirection = .horizontal,times: Int = 5,
interval:TimeInterval = 0.1, delta : CGFloat = 5,completion:(() -> Void)?=nil){
if times == 0 {
self.layer.setAffineTransform(CGAffineTransform.identity)
} else {
UIView.animate(withDuration: interval) {
switch direction {
case .horizontal:
self.layer.setAffineTransform(CGAffineTransform(translationX: delta, y: 0))
break
case .vertical:
self.layer.setAffineTransform(CGAffineTransform(translationX: 0, y: delta))
break
}
} completion: { (finished) in
self.shake2(direction: direction, times: times - 1 , interval: interval, delta: delta * -1, completion: completion)
}
}
}
}
// MARK: - 阴影设置
extension UIView {
@objc public enum ShadowType: Int {
case all = 0 ///四周
case top = 1 ///上方
case left = 2///左边
case right = 3///右边
case bottom = 4///下方
}
///默认设置:黑色阴影, 阴影所占视图的比例
// func shadow(_ type: ShadowType, percent: Float) {
// shadow(type: type, color: .black, opactiy: 0.4, //shadowSize: 4)
//}
///默认设置:黑色阴影
@objc func shadow(_ type: ShadowType) {
shadow(type: type, color: .black, opactiy: 0.1, shadowSize: 4)
}
///阴影设置
@objc public func shadow(type: ShadowType, color: UIColor, opactiy: Float, shadowSize: CGFloat) -> Void {
layer.masksToBounds = false;//必须要等于NO否则会把阴影切割隐藏掉
layer.shadowColor = color.cgColor;// 阴影颜色
layer.shadowOpacity = opactiy;// 阴影透明度,默认0
layer.shadowOffset = .zero;//shadowOffset阴影偏移,默认(0, -3),这个跟shadowRadius配合使用
layer.shadowRadius = 3 //阴影半径,默认3
var shadowRect: CGRect?
switch type {
case .all:
shadowRect = CGRect.init(x: -shadowSize, y: -shadowSize, width: bounds.size.width + 2 * shadowSize, height: bounds.size.height + 2 * shadowSize)
case .top:
shadowRect = CGRect.init(x: -shadowSize, y: -shadowSize, width: bounds.size.width + 2 * shadowSize, height: 2 * shadowSize)
case .bottom:
shadowRect = CGRect.init(x: -shadowSize, y: bounds.size.height - shadowSize, width: bounds.size.width + 2 * shadowSize, height: 2 * shadowSize)
case .left:
shadowRect = CGRect.init(x: -shadowSize, y: -shadowSize, width: 2 * shadowSize, height: bounds.size.height + 2 * shadowSize)
case .right:
shadowRect = CGRect.init(x: bounds.size.width - shadowSize, y: -shadowSize, width: 2 * shadowSize, height: bounds.size.height + 2 * shadowSize)
}
layer.shadowPath = UIBezierPath.init(rect: shadowRect!).cgPath
}
///阴影 0.5
@objc public func bs_shadow(color: UIColor = UIColor(red: 0.87, green: 0.87, blue: 0.87, alpha: 0.7), offset: CGSize = CGSize(width: 0, height: 1.5), opacity: Float = 1, radius: CGFloat = 3.5) {
self.layer.shadowColor = color.cgColor
self.layer.shadowOffset = offset
self.layer.shadowOpacity = opacity
self.layer.shadowRadius = radius
}
///内阴影
@objc public func bs_innerShadow() {
self.layer.shadowColor = UIColor(red: 0.87, green: 0.87, blue: 0.87, alpha: 0.5).cgColor
self.layer.shadowOffset = CGSize(width: 0, height: 0)
self.layer.shadowOpacity = 1
self.layer.shadowRadius = 3
}
}
// MARK: - 圆角设置
extension UIView {
public func setCorners(corners: UIRectCorner, radius: CGFloat) -> Void {
self.setCorners(corners: corners, radius: radius, rect: self.bounds)
}
public func setCorners(corners: UIRectCorner, radius: CGFloat, rect: CGRect) -> Void {
let path = UIBezierPath.init(roundedRect: rect, byRoundingCorners: corners , cornerRadii: CGSize.init(width: radius, height: radius))
let layer = CAShapeLayer.init()
layer.frame = self.bounds
layer.path = path.cgPath
self.layer.mask = layer
}
///渐变颜色(frame需要有值)
@objc public func bs_gradient(_ type: ShadowType = .left, colors: [UIColor], locations: [NSNumber]? = nil) {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.bounds
//设置颜色
var cgColors: [CGColor] = []
for color in colors {
cgColors.append(color.cgColor)
}
gradientLayer.colors = cgColors
//设置占比
if locations == nil {
let num = 1.0/(Double(colors.count)-1.0)
var locations: [NSNumber] = []
for i in 0..<colors.count {
locations.append(NSNumber(value: num*Double(i)))
}
gradientLayer.locations = locations
} else {
gradientLayer.locations = locations
}
//设置位置
switch type {
case .all:
gradientLayer.startPoint = CGPoint(x: 0.5, y: 0.5)
gradientLayer.endPoint = CGPoint(x: 0.5, y: 0.5)
case .top:
gradientLayer.startPoint = CGPoint(x: 0.5, y: 0)
gradientLayer.endPoint = CGPoint(x: 0.5, y: 1)
break
case .left:
gradientLayer.startPoint = CGPoint(x: 0, y: 0.5)
gradientLayer.endPoint = CGPoint(x: 1, y: 0.5)
break
case .right:
gradientLayer.startPoint = CGPoint(x: 1, y: 0.5)
gradientLayer.endPoint = CGPoint(x: 0, y: 0.5)
break
case .bottom:
gradientLayer.startPoint = CGPoint(x: 0.5, y: 1)
gradientLayer.endPoint = CGPoint(x: 0.5, y: 0)
break
}
self.layer.addSublayer(gradientLayer)
}
/// 绘制虚线
/// - Parameters:
/// - lineLength: 长度
/// - lineSpacing: 间隔长度
/// - lineColor: 颜色
public func bs_drawDashLine(lineLength: Int, lineSpacing: Int, lineColor: UIColor) {
let shapeLayer = CAShapeLayer()
shapeLayer.bounds = self.bounds
shapeLayer.anchorPoint = CGPoint(x: 0, y: 0)
shapeLayer.strokeColor = lineColor.cgColor
shapeLayer.lineWidth = 1 //描边路径时使用的线宽。默认为1。
shapeLayer.lineJoin = CAShapeLayerLineJoin.round
shapeLayer.lineDashPattern = [NSNumber(value: lineLength),NSNumber(value: lineSpacing)]
let path = CGMutablePath()
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: self.bounds.size.width, y: 0))
shapeLayer.path = path
self.layer.addSublayer(shapeLayer)
}
}
// MARK: - Frame
extension UIView {
//let cOrigin: CGPoint //!< 位置
//let cSize: CGSize //!< 大小
open var height: CGFloat {
get {
return self.frame.height
}
set {
var frame = self.frame
frame.size.height = newValue
self.frame = frame
}
} //!< 高度
open var width: CGFloat {
get {
return self.frame.width
}
set {
var frame = self.frame
frame.size.width = newValue
self.frame = frame
}
} //!< 宽度
open var top: CGFloat {
get {
return self.frame.minY
}
set {
var frame = self.frame
frame.origin.y = newValue
self.frame = frame
}
} //!< 上
open var left: CGFloat {
get {
return self.frame.minX
}
set {
var frame = self.frame
frame.origin.x = newValue
self.frame = frame
}
} //!< 左
open var bottom: CGFloat {
get {
return self.frame.maxY
}
set {
var frame = self.frame
frame.origin.y = newValue - self.frame.height
self.frame = frame
}
} //!< 下
open var right: CGFloat {
get {
return self.frame.maxX
}
set {
var frame = self.frame;
frame.origin.x = newValue - self.frame.width
self.frame = frame
}
} //!< 右
}
......@@ -124,6 +124,8 @@ open class AlignedCollectionViewFlowLayout: UICollectionViewFlowLayout {
default:
break
}
@unknown default:
fatalError()
}
// It's safe to force-unwrap as `.leading` and `.trailing` are covered
......
//
// BSjsonUtil.swift
// BaiSiSMApp
//
// Created by davidhuang on 2022/11/18.
// Copyright © 2022 www.davidhuang.com. All rights reserved.
//
import UIKit
import HandyJSON
class BSJsonUtil: NSObject {
/**
* Json转对象
*/
static func jsonToModel(_ jsonStr:String,_ modelType:HandyJSON.Type) ->BsBaseModel {
if jsonStr == "" || jsonStr.count == 0 {
#if DEBUG
print("jsonoModel:字符串为空")
#endif
return BsBaseModel()
}
return modelType.deserialize(from: jsonStr) as! BsBaseModel
}
/**
* Json转数组对象
*/
static func jsonArrayToModel(_ jsonArrayStr:String, _ modelType:HandyJSON.Type) ->[BsBaseModel] {
if jsonArrayStr == "" || jsonArrayStr.count == 0 {
#if DEBUG
print("jsonToModelArray:字符串为空")
#endif
return []
}
var modelArray:[BsBaseModel] = []
let data = jsonArrayStr.data(using: String.Encoding.utf8)
let peoplesArray = try! JSONSerialization.jsonObject(with:data!, options: JSONSerialization.ReadingOptions()) as? [AnyObject]
for people in peoplesArray! {
modelArray.append(dictionaryToModel(people as! [String : Any], modelType))
}
return modelArray
}
/**
* 字典转对象
*/
static func dictionaryToModel(_ dictionStr:[String:Any],_ modelType:HandyJSON.Type) -> BsBaseModel {
if dictionStr.count == 0 {
#if DEBUG
print("dictionaryToModel:字符串为空")
#endif
return BsBaseModel()
}
return modelType.deserialize(from: dictionStr) as! BsBaseModel
}
/**
* 对象转JSON
*/
static func modelToJson(_ model:BsBaseModel?) -> String {
if model == nil {
#if DEBUG
print("modelToJson:model为空")
#endif
return ""
}
return (model?.toJSONString())!
}
/**
* 对象转字典
*/
static func modelToDictionary(_ model:BsBaseModel?) -> [String:Any] {
if model == nil {
#if DEBUG
print("modelToJson:model为空")
#endif
return [:]
}
return (model?.toJSON())!
}
//数组转json
static func arrayToJson(_ array:NSArray) -> String {
if (!JSONSerialization.isValidJSONObject(array)) {
print("无法解析出JSONString")
return ""
}
let data : NSData! = try? JSONSerialization.data(withJSONObject: array, options: []) as NSData
let JSONString = NSString(data:data as Data,encoding: String.Encoding.utf8.rawValue)
return JSONString! as String
}
/**
* 字典转JSON
*/
static func dictionaryToJson(_ dictionary:NSDictionary) -> String {
if (!JSONSerialization.isValidJSONObject(dictionary)) {
print("无法解析出JSONString")
return ""
}
let data : NSData! = try? JSONSerialization.data(withJSONObject: dictionary, options: []) as NSData
let JSONString = NSString(data:data as Data,encoding: String.Encoding.utf8.rawValue)
return JSONString! as String
}
}
......@@ -8,7 +8,7 @@
import Foundation
open class BsCacheTool: NSObject {
open class YhCacheTool {
/// 计算缓存大小
public static var cacheSize: String{
......
......@@ -9,117 +9,7 @@
import UIKit
// MARK: - 工程中的 常量定义
class BsConstant {
// MARK: - 个人信息基本类型
enum UserBaseInfoType : Int {
case unknow //未知
case sex//性别
case birthday//生日
case height//身高
case weight//体重
case education //学历
case profession //职务
case work_domain//从事行业
case income//收入
func title() -> String {
switch self {
case .sex:
return "性别"
case .birthday:
return "生日"
case .height:
return "身高"
case .weight:
return "体重"
case .education:
return "学历"
case .profession:
return "职务"
case .work_domain:
return "从事行业"
case .income:
return "收入"
default:
return "--"
}
}
func titleForSelectView() -> String {
switch self {
case .sex:
return "性别"
case .birthday:
return "生日"
case .height:
return "身高(单位:cm)"
case .weight:
return "体重(单位:kg)"
case .education:
return "学历"
case .profession:
return "职务"
case .work_domain:
return "从事行业"
case .income:
return "收入(单位:k)"
default:
return "--"
}
}
/*
var id : String = ""//用户ID
var user_type : String = ""//用户类型 1:普通用户2.明星用户3.管理员
var sex : String = ""//性别 0其他, 1:男, 2女
var real_name : String = "" //真实姓名
var nick_name : String = "" //昵称
var avatar : String = ""//头像
var birthday : String = ""//生日
var status : String = ""//用户状态1:正常,0:已注销
var height : String = ""//身高
var weight : String = ""//体重
var user_name : String = ""//用户名
var phone : String = ""//手机号码
var marital_status : String = ""//婚姻情况
var profession : String = ""//职业ID
var profession_name : String = ""//职业名称
var education : String = ""//文化程度ID
var education_name : String = ""//文化程度名称
var work_domain : String = ""//行业领域ID
var work_domain_name : String = ""//行业领域名称
*/
func key() -> String {
switch self {
case .sex:
return "sex"
case .birthday:
return "birthday"
case .height:
return "height"
case .weight:
return "weight"
case .education:
return "education"
case .profession:
return "profession"
case .work_domain:
return "work_domain"
case .income:
return "monthly_income"
default:
return ""
}
}
}
class YhConstant {
// MARK: - URL 相关
struct URL {
......@@ -151,29 +41,12 @@ class BsConstant {
static let wx_universal_link = universal_link + "wx-sign-in/"
//#if DEBUG
// // MARK: - 医学中心
// static let medical_center_url = "http://10.168.3.41:10086/h5/#/pages/medicineCenter/index"
//#else
// MARK: - 医学中心
static let medical_center_url = YHBaseUrlManager.shared.h5URL() + "landing/index.html#/pages/medicineCenter/index"
//#endif
// MARK: - 助眠专辑详情
//static let music_detail_url = BsBaseUrlManager.shared.h5URL() + "landing/index.html#/subpages/platform/pages/musicdetail/index?immerse=1"
// MARK: - 文章列表
//static let article_list_url = BsBaseUrlManager.shared.h5URL() + "landing/index.html#/subpages/platform/pages/articlelist/index?immerse=1"
// MARK: - 文章详情
static let article_detail_url = YHBaseUrlManager.shared.h5URL() + "landing/index.html#/subpages/platform/pages/articledetail/index?immerse=1"
// MARK: - 科普视频列表
//static let video_list_url = BsBaseUrlManager.shared.h5URL() + "landing/index.html#/subpages/platform/pages/videolist/index?immerse=1"
}
......@@ -195,7 +68,7 @@ class BsConstant {
}
extension BsConstant {
extension YhConstant {
// MARK: - 友盟相关
struct Wechat {
static let appKey = "wx57b2a7469d15ff8f"
......@@ -215,8 +88,6 @@ extension BsConstant {
class BsNotification {
public static let didCancelTaskNotification = Notification.Name(rawValue: "org.alamofire.notification.name.request.didCancelTask")
//用户详细信息更改成功
public static let didUpdateUserDetailInfoSuccessNotifiction = Notification.Name(rawValue: "com.usleep.health.updateUserDetailInfo.success")
......
......@@ -8,12 +8,12 @@
import UIKit
open class BsGestureTableView: UITableView {
open class YhGestureTableView: UITableView {
}
// MARK: - UIGestureRecognizerDelegate
extension BsGestureTableView: UIGestureRecognizerDelegate {
extension YhGestureTableView: UIGestureRecognizerDelegate {
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
......@@ -27,13 +27,13 @@ extension BsGestureTableView: UIGestureRecognizerDelegate {
open class BsGestureScrollView: UIScrollView {
open class YhGestureScrollView: UIScrollView {
}
// MARK: - UIGestureRecognizerDelegate
extension BsGestureScrollView: UIGestureRecognizerDelegate {
extension YhGestureScrollView: UIGestureRecognizerDelegate {
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
......@@ -46,13 +46,13 @@ extension BsGestureScrollView: UIGestureRecognizerDelegate {
}
open class BsGestureCollectionView: UICollectionView {
open class YhGestureCollectionView: UICollectionView {
}
// MARK: - UIGestureRecognizerDelegate
extension BsGestureCollectionView: UIGestureRecognizerDelegate {
extension YhGestureCollectionView: UIGestureRecognizerDelegate {
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
......
......@@ -8,7 +8,7 @@
import UIKit
class BsOverlayView: UIView {
class YhOverlayView: UIView {
// MARK: - 属性
......@@ -30,7 +30,7 @@ class BsOverlayView: UIView {
private func setupOverlayView() {
// 1 获取window
if (keyWindow == nil) {
self.keyWindow = UIApplication.shared.bsKeyWindow()
self.keyWindow = UIApplication.shared.yhKeyWindow()
}
// 2.遮罩view
overlayView = UIControl.init(frame: UIScreen.main.bounds)
......
//
// NetBaseModel.swift
// galaxy
//
// Created by davidhuangA on 2023/12/28.
// Copyright © 2023 www.davidhuang.com. All rights reserved.
//
import Foundation
import SmartCodable
struct NetBaseModel: SmartCodable {
var data : SmartAny?
var errorCode : Int = -1
var errorMessage : String = ""
var success : Bool = false
var test: TestModel = TestModel()
var testArr:[TestModel] = []
}
struct TestModel: SmartCodable {
var test1 : String = ""
var test2 : String = ""
var test3 : String = ""
enum CodingKeys: String, CodingKey {
case test1
case test2
case test3 = "test333" //字段 映射
}
}
......@@ -37,7 +37,7 @@ class YHBaseUrlManager {
#if DEBUG
return urlForEditing ?? YHBaseUrlManager.baseUrlDev
#else
return urlForEditing ?? YHBaseUrlManager.baseUrlRelease
return YHBaseUrlManager.baseUrlRelease
#endif
}
......
......@@ -85,7 +85,7 @@ class YHNetRequest: NSObject {
let errorCodeStr = "0"
var statusCode = string.response?.statusCode ?? 0
let errorResponseMsg = string.error?.localizedDescription ?? ""
let timeOut = string.error?._code
_ = string.error?._code
let resultValue = string.value ?? ""
let serverDict = self.converStringToMap(fromStr: resultValue)
switch responseResult {
......
//
// YHHomeViewController.swift
// galaxy
//
// Created by EDY on 2023/12/20.
//
import UIKit
class YHHomeViewController: YHBaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .purple
// Do any additional setup after loading the view.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
//
// YHHomeViewController.swift
// galaxy
//
// Created by EDY on 2023/12/20.
//
import UIKit
import SmartCodable
//智慧服务
class YHIntelligentServiceViewController: YHBaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
initView()
testModelParse()
}
func initView() {
navigationItem.title = "智慧服务"
view.backgroundColor = YHColorWithHex(0xE9E9E9)
}
func testModelParse() {
SmartConfig.debugMode = .verbose
let json = """
{
"data": "balabala Team",
"errorCode": 0,
"errorMessage": "操作成功",
"success":true,
"test": {
"test1": "test1-value",
"test2": "test2-value",
"test333": "test3-value",
},
"testArr":[
{
"test1": "test1-value",
"test2": "test2-value",
"test333": "test3-value",
},
{
"test1": "test1-value",
"test2": "test2-value",
"test333": "test3-value",
},
{
"test1": "test1-value",
"test2": "test2-value",
"test333": "test3-value",
}
]
}
"""
//1. json字符串 转 对象
guard let model = NetBaseModel.deserialize(json: json) else { return }
print("model 是 ==>",model)
print(model)
//2. 对象 转 dictionary
let dic = model.toDictionary()
print("dic 是 ==>",dic as Any)
//3. dictionary 转 string
let jsonString = dic?.jsonString()
print("jsonString 是 ==>",jsonString ?? "")
//4.model 转 string
let jsonString2 = model.toJSONString()
print("jsonString2 是 ==>",jsonString2 ?? "")
//5. dic 转 model
guard let model1 = NetBaseModel.deserialize(dict: dic) else { return }
print("model1 是 ==>",model1)
}
}
......@@ -184,6 +184,6 @@ class YHLoginViewController: YHBaseViewController {
make.height.equalTo(20)
make.width.equalTo(308)
}
//测试
}
}
......@@ -137,7 +137,7 @@ class YHValidateCodeInputView: UIView {
for index in 1...count {
let component = self.viewWithTag(baseTag+index) as! YHValidateCodeComponentView
let textField = component.viewWithTag(999) as! UITextField
_ = component.viewWithTag(999) as! UITextField
}
}
......
......@@ -128,9 +128,9 @@ class YHSmsCodeInputView: UIView {
}
for index in (0 ..< config.count) {
if index < input.text?.count {
// if index < input.text?.count {
}
// }
}
}
}
......
......@@ -7,23 +7,17 @@
import UIKit
import SnapKit
import PDFKit
struct PersonalModuleItem {
var icon: String
var title: String
init(icon: String, title: String) {
self.icon = icon
self.title = title
}
}
class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget {
lazy var tableView: UITableView = {
let tableView = UITableView(frame: CGRect.zero, style:.plain)
tableView.backgroundColor = UIColor.red
tableView.backgroundColor = YHColorWithHex(0xE9E9E9)
tableView.separatorStyle = .none
tableView.register(YHPersonalCenterCell.self, forCellReuseIdentifier: YHPersonalCenterCell.cellReuseIdentifier)
tableView.delegate = self
......@@ -48,17 +42,28 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget {
override func viewDidLoad() {
super.viewDidLoad()
// view.addSubview(tableView);
// tableView.snp.makeConstraints { make in
// make.left.right.top.bottom.equalTo(view)
// }
let bgImgView = UIImageView(image: UIImage(named: "launch_screen_image"))
view.addSubview(bgImgView)
bgImgView.snp.makeConstraints { make in
make.edges.equalTo(self.view)
initView()
}
func initView() {
navigationItem.title = "我的"
view.backgroundColor = YHColorWithHex(0xE9E9E9)
view.addSubview(tableView);
tableView.snp.makeConstraints { make in
make.left.right.top.bottom.equalTo(view)
}
// let bgImgView = UIImageView(image: UIImage(named: "launch_screen_image"))
// view.addSubview(bgImgView)
// bgImgView.snp.makeConstraints { make in
// make.edges.equalTo(self.view)
// }
view.addSubview(self.smsInputView)
smsInputView.snp.makeConstraints { make in
make.left.equalTo(self.view).offset(50)
......@@ -75,6 +80,7 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget {
// make.height.equalTo(100)
// }
}
}
extension YHMyViewController : UITableViewDelegate, UITableViewDataSource {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment