Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
galaxy-iOS
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mobile-group
galaxy-iOS
Commits
4802f89b
Commit
4802f89b
authored
Jan 04, 2024
by
David黄金龙
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
工程代码整理
parent
3e734b05
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
161 additions
and
179 deletions
+161
-179
project.pbxproj
galaxy/galaxy.xcodeproj/project.pbxproj
+8
-12
YHConfig.swift
galaxy/galaxy/Classes/Tools/Config/YHConfig.swift
+0
-148
String+Extension.swift
galaxy/galaxy/Classes/Tools/Extention/String+Extension.swift
+3
-3
UIImage+Extension.swift
...xy/galaxy/Classes/Tools/Extention/UIImage+Extension.swift
+1
-1
YhConstant.swift
galaxy/galaxy/Classes/Tools/Helper/YhConstant.swift
+140
-0
YHNetRequest.swift
galaxy/galaxy/Classes/Tools/NetWork/YHNetRequest.swift
+9
-15
No files found.
galaxy/galaxy.xcodeproj/project.pbxproj
View file @
4802f89b
...
@@ -25,7 +25,6 @@
...
@@ -25,7 +25,6 @@
A5ACE92F2B4564F7002C94D2
/* YHMyViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8EA2B4564F7002C94D2
/* YHMyViewController.swift */
;
};
A5ACE92F2B4564F7002C94D2
/* YHMyViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8EA2B4564F7002C94D2
/* YHMyViewController.swift */
;
};
A5ACE9302B4564F7002C94D2
/* Algorithm.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8EC2B4564F7002C94D2
/* Algorithm.swift */
;
};
A5ACE9302B4564F7002C94D2
/* Algorithm.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8EC2B4564F7002C94D2
/* Algorithm.swift */
;
};
A5ACE9312B4564F7002C94D2
/* YHPersonalCenterCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8ED2B4564F7002C94D2
/* YHPersonalCenterCell.swift */
;
};
A5ACE9312B4564F7002C94D2
/* YHPersonalCenterCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8ED2B4564F7002C94D2
/* YHPersonalCenterCell.swift */
;
};
A5ACE9322B4564F7002C94D2
/* YHConfig.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8F02B4564F7002C94D2
/* YHConfig.swift */
;
};
A5ACE9332B4564F7002C94D2
/* NetBaseModel.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8F22B4564F7002C94D2
/* NetBaseModel.swift */
;
};
A5ACE9332B4564F7002C94D2
/* NetBaseModel.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8F22B4564F7002C94D2
/* NetBaseModel.swift */
;
};
A5ACE9342B4564F7002C94D2
/* YHAllApiName.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8F32B4564F7002C94D2
/* YHAllApiName.swift */
;
};
A5ACE9342B4564F7002C94D2
/* YHAllApiName.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8F32B4564F7002C94D2
/* YHAllApiName.swift */
;
};
A5ACE9352B4564F7002C94D2
/* YHNetRequest.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8F42B4564F7002C94D2
/* YHNetRequest.swift */
;
};
A5ACE9352B4564F7002C94D2
/* YHNetRequest.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A5ACE8F42B4564F7002C94D2
/* YHNetRequest.swift */
;
};
...
@@ -110,7 +109,6 @@
...
@@ -110,7 +109,6 @@
A5ACE8EA2B4564F7002C94D2
/* YHMyViewController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMyViewController.swift
;
sourceTree
=
"<group>"
;
};
A5ACE8EA2B4564F7002C94D2
/* YHMyViewController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMyViewController.swift
;
sourceTree
=
"<group>"
;
};
A5ACE8EC2B4564F7002C94D2
/* Algorithm.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Algorithm.swift
;
sourceTree
=
"<group>"
;
};
A5ACE8EC2B4564F7002C94D2
/* Algorithm.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Algorithm.swift
;
sourceTree
=
"<group>"
;
};
A5ACE8ED2B4564F7002C94D2
/* YHPersonalCenterCell.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHPersonalCenterCell.swift
;
sourceTree
=
"<group>"
;
};
A5ACE8ED2B4564F7002C94D2
/* YHPersonalCenterCell.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHPersonalCenterCell.swift
;
sourceTree
=
"<group>"
;
};
A5ACE8F02B4564F7002C94D2
/* YHConfig.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHConfig.swift
;
sourceTree
=
"<group>"
;
};
A5ACE8F22B4564F7002C94D2
/* NetBaseModel.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
NetBaseModel.swift
;
sourceTree
=
"<group>"
;
};
A5ACE8F22B4564F7002C94D2
/* NetBaseModel.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
NetBaseModel.swift
;
sourceTree
=
"<group>"
;
};
A5ACE8F32B4564F7002C94D2
/* YHAllApiName.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAllApiName.swift
;
sourceTree
=
"<group>"
;
};
A5ACE8F32B4564F7002C94D2
/* YHAllApiName.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAllApiName.swift
;
sourceTree
=
"<group>"
;
};
A5ACE8F42B4564F7002C94D2
/* YHNetRequest.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHNetRequest.swift
;
sourceTree
=
"<group>"
;
};
A5ACE8F42B4564F7002C94D2
/* YHNetRequest.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHNetRequest.swift
;
sourceTree
=
"<group>"
;
};
...
@@ -342,7 +340,6 @@
...
@@ -342,7 +340,6 @@
A5ACE8EE2B4564F7002C94D2
/* Tools */
=
{
A5ACE8EE2B4564F7002C94D2
/* Tools */
=
{
isa
=
PBXGroup
;
isa
=
PBXGroup
;
children
=
(
children
=
(
A5ACE8EF2B4564F7002C94D2
/* Config */
,
A5ACE8F12B4564F7002C94D2
/* NetWork */
,
A5ACE8F12B4564F7002C94D2
/* NetWork */
,
A5ACE8F72B4564F7002C94D2
/* Extention */
,
A5ACE8F72B4564F7002C94D2
/* Extention */
,
A5ACE9052B4564F7002C94D2
/* Helper */
,
A5ACE9052B4564F7002C94D2
/* Helper */
,
...
@@ -350,14 +347,6 @@
...
@@ -350,14 +347,6 @@
path
=
Tools
;
path
=
Tools
;
sourceTree
=
"<group>"
;
sourceTree
=
"<group>"
;
};
};
A5ACE8EF2B4564F7002C94D2
/* Config */
=
{
isa
=
PBXGroup
;
children
=
(
A5ACE8F02B4564F7002C94D2
/* YHConfig.swift */
,
);
path
=
Config
;
sourceTree
=
"<group>"
;
};
A5ACE8F12B4564F7002C94D2
/* NetWork */
=
{
A5ACE8F12B4564F7002C94D2
/* NetWork */
=
{
isa
=
PBXGroup
;
isa
=
PBXGroup
;
children
=
(
children
=
(
...
@@ -504,6 +493,7 @@
...
@@ -504,6 +493,7 @@
A5ACE9592B457113002C94D2
/* Home(首页) */
=
{
A5ACE9592B457113002C94D2
/* Home(首页) */
=
{
isa
=
PBXGroup
;
isa
=
PBXGroup
;
children
=
(
children
=
(
A5D6AB192B465DFF001C10A5
/* VM */
,
A5ACE95C2B457133002C94D2
/* C */
,
A5ACE95C2B457133002C94D2
/* C */
,
A5ACE95B2B45712D002C94D2
/* V */
,
A5ACE95B2B45712D002C94D2
/* V */
,
A5ACE95A2B457128002C94D2
/* M */
,
A5ACE95A2B457128002C94D2
/* M */
,
...
@@ -533,6 +523,13 @@
...
@@ -533,6 +523,13 @@
path
=
C
;
path
=
C
;
sourceTree
=
"<group>"
;
sourceTree
=
"<group>"
;
};
};
A5D6AB192B465DFF001C10A5
/* VM */
=
{
isa
=
PBXGroup
;
children
=
(
);
path
=
VM
;
sourceTree
=
"<group>"
;
};
/* End PBXGroup section */
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
/* Begin PBXNativeTarget section */
...
@@ -729,7 +726,6 @@
...
@@ -729,7 +726,6 @@
A5ACE94B2B4564F7002C94D2
/* BsHUDRotatingImageView.swift in Sources */
,
A5ACE94B2B4564F7002C94D2
/* BsHUDRotatingImageView.swift in Sources */
,
A5ACE94F2B4564F7002C94D2
/* YhOverlayView.swift in Sources */
,
A5ACE94F2B4564F7002C94D2
/* YhOverlayView.swift in Sources */
,
A5ACE92E2B4564F7002C94D2
/* YHValidateCodeInputView.swift in Sources */
,
A5ACE92E2B4564F7002C94D2
/* YHValidateCodeInputView.swift in Sources */
,
A5ACE9322B4564F7002C94D2
/* YHConfig.swift in Sources */
,
A5ACE94E2B4564F7002C94D2
/* AlignedCollectionViewFlowLayout.swift in Sources */
,
A5ACE94E2B4564F7002C94D2
/* AlignedCollectionViewFlowLayout.swift in Sources */
,
A5ACE93B2B4564F7002C94D2
/* UIFont+Extension.swift in Sources */
,
A5ACE93B2B4564F7002C94D2
/* UIFont+Extension.swift in Sources */
,
A5ACE9282B4564F7002C94D2
/* YHSmsCodeView.swift in Sources */
,
A5ACE9282B4564F7002C94D2
/* YHSmsCodeView.swift in Sources */
,
...
...
galaxy/galaxy/Classes/Tools/Config/YHConfig.swift
deleted
100644 → 0
View file @
3e734b05
//
// YHConfig.swift
// galaxy
//
// Created by EDY on 2023/12/26.
//
import
Foundation
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
let
flieName
=
(
file
as
NSString
)
.
lastPathComponent
print
(
"
\(
APP_NAME
)
/
\(
flieName
)
/
\(
funcName
)
/
\(
lineName
)
:
\(
message
)
"
)
#endif
}
///屏幕宽度
let
KScreenWidth
=
UIScreen
.
main
.
bounds
.
size
.
width
///屏幕高度
let
KScreenHeight
=
UIScreen
.
main
.
bounds
.
size
.
height
///导航栏高度
let
k_Height_NavContentBar
:
CGFloat
=
44.0
/** 状态栏高度 */
let
k_Height_StatusBar
:
CGFloat
=
k_Height_statusBar
()
/** 状态栏+导航栏的高度 */
let
k_Height_NavigationtBarAndStatuBar
:
CGFloat
=
k_Height_NavContentBar
+
k_Height_StatusBar
/** 底部tabBar栏高度(不包含安全区,即:在 iphoneX 之前的手机) */
let
k_TabBar_Height
:
CGFloat
=
49.0
/** 底部导航栏高度(包括安全区),一般使用这个值 */
let
k_Height_TabBar
:
CGFloat
=
k_Height_safeAreaInsetsBottom
()
+
k_TabBar_Height
// MARK: - 尺寸信息: -
/* 状态栏高度 20 或 44 */
// 然而从iOS 14开始,全面屏iPhone的状态栏高度不一定是 44 或 20 了,比如下面就是这些设备在iOS 14.1上的状态栏高度。(还可能时47、48)
/// ①、顶部状态栏高度(包括安全区)
func
k_Height_statusBar
()
->
CGFloat
{
var
statusBarHeight
:
CGFloat
=
0
;
if
#available(iOS 13.0, *)
{
let
scene
=
UIApplication
.
shared
.
connectedScenes
.
first
guard
let
windowScene
=
scene
as?
UIWindowScene
else
{
return
0
};
guard
let
statusBarManager
=
windowScene
.
statusBarManager
else
{
return
0
}
statusBarHeight
=
statusBarManager
.
statusBarFrame
.
height
}
else
{
statusBarHeight
=
UIApplication
.
shared
.
statusBarFrame
.
height
}
return
statusBarHeight
;
}
/// ②、顶部安全区高度 k_Height_safeAreaInsetsTop
func
k_Height_safeAreaInsetsTop
()
->
CGFloat
{
if
#available(iOS 13.0, *)
{
let
scene
=
UIApplication
.
shared
.
connectedScenes
.
first
guard
let
windowScene
=
scene
as?
UIWindowScene
else
{
return
0
}
// guard:如果 expression 值计算为false,则执行代码块内的 guard 语句。(必须包含一个控制语句: return、 break、 continue 或 throw。)。as?:类型转换,(还有这两种:as、as!)
guard
let
window
=
windowScene
.
windows
.
first
else
{
return
0
};
return
window
.
safeAreaInsets
.
top
;
}
return
0
}
/// ③、底部安全区高度
func
k_Height_safeAreaInsetsBottom
()
->
CGFloat
{
if
#available(iOS 13.0, *)
{
let
scene
=
UIApplication
.
shared
.
connectedScenes
.
first
;
guard
let
windowScene
=
scene
as?
UIWindowScene
else
{
return
0
};
guard
let
window
=
windowScene
.
windows
.
first
else
{
return
0
};
return
window
.
safeAreaInsets
.
bottom
;
}
return
0
;
}
///获取系统版本号
func
IOSVersion
()
->
Double
{
return
(
UIDevice
.
current
.
systemVersion
as
NSString
)
.
doubleValue
}
///组件化用类名创建控制器
func
ClassFromString
(
className
:
String
)
->
UIViewController
?
{
let
appName
=
Bundle
.
main
.
object
(
forInfoDictionaryKey
:
"CFBundleName"
)
let
name
=
"
\(
appName
!
)
.
\(
className
)
"
if
let
tmpClass
=
NSClassFromString
(
name
)
as?
UIViewController
.
Type
{
return
tmpClass
.
init
()
}
else
{
return
nil
}
}
/** 判断字符串是否为空 */
func
kIsEmpty
(
string
:
String
)
->
Bool
{
if
string
.
isEmpty
||
string
==
""
{
return
true
}
else
{
return
false
}
}
/** 文字大小设置
* parameter name 字体名字 (为空时默认字体)
* parameter size 字体大小
*/
func
kFont
(
name
:
String
=
""
,
size
:
CGFloat
)
->
UIFont
{
if
!
kIsEmpty
(
string
:
name
)
{
return
UIFont
.
init
(
name
:
name
,
size
:
size
)
!
}
else
{
return
UIFont
.
systemFont
(
ofSize
:
size
)
}
}
func
kBoldFont
(
name
:
String
=
""
,
size
:
CGFloat
)
->
UIFont
{
if
!
kIsEmpty
(
string
:
name
)
{
return
UIFont
.
init
(
name
:
name
,
size
:
size
)
!
}
else
{
return
UIFont
.
boldSystemFont
(
ofSize
:
size
)
}
}
/// 版本号相同:
func
systemVersionEqual
(
version
:
String
)
->
Bool
{
return
UIDevice
.
current
.
systemVersion
==
version
}
/// 系统版本高于等于该version 测试发现只能传入带一位小数点的版本号 不然会报错 具体原因待探究
func
systemVersionGreaterThan
(
version
:
String
)
->
Bool
{
return
UIDevice
.
current
.
systemVersion
.
compare
(
version
,
options
:
.
numeric
,
range
:
version
.
startIndex
..<
version
.
endIndex
,
locale
:
Locale
(
identifier
:
version
))
!=
ComparisonResult
.
orderedAscending
}
//判断是否是 x、及x以上 系列
func
isIphoneX
()
->
Bool
{
return
k_Height_safeAreaInsetsBottom
()
>
0.0
// 底部安全区 > 0 时,
}
/// 根据RGBA生成颜色(格式为:22,22,22,0.5)
var
YHRGBAColor
:
(
CGFloat
,
CGFloat
,
CGFloat
,
CGFloat
)
->
UIColor
=
{
red
,
green
,
blue
,
alpha
in
return
UIColor
(
red
:
red
/
255
,
green
:
green
/
255
,
blue
:
blue
/
255
,
alpha
:
alpha
)
}
/// 根据RGB生成颜色(格式为:22,22,22)
var
YHRGBColor
:
(
CGFloat
,
CGFloat
,
CGFloat
)
->
UIColor
=
{
red
,
green
,
blue
in
return
UIColor
(
red
:
red
/
255
,
green
:
green
/
255
,
blue
:
blue
/
255
,
alpha
:
1
)
}
/// 根据色值生成颜色(无透明度)(格式为0xffffff)
var
YHColorWithHex
:
(
NSInteger
)
->
UIColor
=
{
hex
in
return
UIColor
(
red
:
((
CGFloat
)((
hex
&
0xFF0000
)
>>
16
))
/
255.0
,
green
:
((
CGFloat
)((
hex
&
0xFF00
)
>>
8
))
/
255.0
,
blue
:
((
CGFloat
)(
hex
&
0xFF
))
/
255.0
,
alpha
:
1
)
}
galaxy/galaxy/Classes/Tools/Extention/String+Extension.swift
View file @
4802f89b
...
@@ -9,14 +9,14 @@
...
@@ -9,14 +9,14 @@
import
UIKit
import
UIKit
extension
String
{
extension
String
{
/// JSONString转换为字典
/// JSONString转换为字典
func
toDictionary
()
->
Dictionary
<
String
,
Any
>
?
{
func
toDictionary
()
->
Dictionary
<
String
,
Any
>
{
guard
let
jsonData
:
Data
=
data
(
using
:
.
utf8
)
else
{
return
nil
}
guard
let
jsonData
:
Data
=
data
(
using
:
.
utf8
)
else
{
return
[
String
:
Any
]()
}
if
let
dict
=
try
?
JSONSerialization
.
jsonObject
(
with
:
jsonData
,
options
:
.
mutableContainers
)
{
if
let
dict
=
try
?
JSONSerialization
.
jsonObject
(
with
:
jsonData
,
options
:
.
mutableContainers
)
{
if
let
temp
=
dict
as?
Dictionary
<
String
,
Any
>
{
if
let
temp
=
dict
as?
Dictionary
<
String
,
Any
>
{
return
temp
return
temp
}
}
}
}
return
nil
return
[
String
:
Any
]()
}
}
/// JSONString转换为数组
/// JSONString转换为数组
...
...
galaxy/galaxy/Classes/Tools/Extention/UIImage+Extension.swift
View file @
4802f89b
...
@@ -12,6 +12,7 @@ extension UIImage {
...
@@ -12,6 +12,7 @@ extension UIImage {
return
UIImage
(
named
:
"default-head-image"
)
return
UIImage
(
named
:
"default-head-image"
)
}
}
//颜色 转换成 图片
static
func
from
(
color
:
UIColor
,
static
func
from
(
color
:
UIColor
,
rect
:
CGRect
=
CGRect
(
origin
:
CGPoint
.
zero
,
size
:
CGSize
(
width
:
4
,
height
:
4
)))
->
UIImage
{
rect
:
CGRect
=
CGRect
(
origin
:
CGPoint
.
zero
,
size
:
CGSize
(
width
:
4
,
height
:
4
)))
->
UIImage
{
UIGraphicsBeginImageContext
(
rect
.
size
)
UIGraphicsBeginImageContext
(
rect
.
size
)
...
@@ -141,5 +142,4 @@ extension UIImage {
...
@@ -141,5 +142,4 @@ extension UIImage {
UIGraphicsEndImageContext
()
UIGraphicsEndImageContext
()
return
newImage
return
newImage
}
}
}
}
galaxy/galaxy/Classes/Tools/Helper/YhConstant.swift
View file @
4802f89b
...
@@ -9,6 +9,146 @@
...
@@ -9,6 +9,146 @@
import
UIKit
import
UIKit
// MARK: - 工程中的 常量定义
// MARK: - 工程中的 常量定义
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
let
flieName
=
(
file
as
NSString
)
.
lastPathComponent
print
(
"
\(
APP_NAME
)
/
\(
flieName
)
/
\(
funcName
)
/
\(
lineName
)
:
\(
message
)
"
)
#endif
}
///屏幕宽度
let
KScreenWidth
=
UIScreen
.
main
.
bounds
.
size
.
width
///屏幕高度
let
KScreenHeight
=
UIScreen
.
main
.
bounds
.
size
.
height
///导航栏高度
let
k_Height_NavContentBar
:
CGFloat
=
44.0
/** 状态栏高度 */
let
k_Height_StatusBar
:
CGFloat
=
k_Height_statusBar
()
/** 状态栏+导航栏的高度 */
let
k_Height_NavigationtBarAndStatuBar
:
CGFloat
=
k_Height_NavContentBar
+
k_Height_StatusBar
/** 底部tabBar栏高度(不包含安全区,即:在 iphoneX 之前的手机) */
let
k_TabBar_Height
:
CGFloat
=
49.0
/** 底部导航栏高度(包括安全区),一般使用这个值 */
let
k_Height_TabBar
:
CGFloat
=
k_Height_safeAreaInsetsBottom
()
+
k_TabBar_Height
// MARK: - 尺寸信息: -
/* 状态栏高度 20 或 44 */
// 然而从iOS 14开始,全面屏iPhone的状态栏高度不一定是 44 或 20 了,比如下面就是这些设备在iOS 14.1上的状态栏高度。(还可能时47、48)
/// ①、顶部状态栏高度(包括安全区)
func
k_Height_statusBar
()
->
CGFloat
{
var
statusBarHeight
:
CGFloat
=
0
;
if
#available(iOS 13.0, *)
{
let
scene
=
UIApplication
.
shared
.
connectedScenes
.
first
guard
let
windowScene
=
scene
as?
UIWindowScene
else
{
return
0
};
guard
let
statusBarManager
=
windowScene
.
statusBarManager
else
{
return
0
}
statusBarHeight
=
statusBarManager
.
statusBarFrame
.
height
}
else
{
statusBarHeight
=
UIApplication
.
shared
.
statusBarFrame
.
height
}
return
statusBarHeight
;
}
/// ②、顶部安全区高度 k_Height_safeAreaInsetsTop
func
k_Height_safeAreaInsetsTop
()
->
CGFloat
{
if
#available(iOS 13.0, *)
{
let
scene
=
UIApplication
.
shared
.
connectedScenes
.
first
guard
let
windowScene
=
scene
as?
UIWindowScene
else
{
return
0
}
// guard:如果 expression 值计算为false,则执行代码块内的 guard 语句。(必须包含一个控制语句: return、 break、 continue 或 throw。)。as?:类型转换,(还有这两种:as、as!)
guard
let
window
=
windowScene
.
windows
.
first
else
{
return
0
};
return
window
.
safeAreaInsets
.
top
;
}
return
0
}
/// ③、底部安全区高度
func
k_Height_safeAreaInsetsBottom
()
->
CGFloat
{
if
#available(iOS 13.0, *)
{
let
scene
=
UIApplication
.
shared
.
connectedScenes
.
first
;
guard
let
windowScene
=
scene
as?
UIWindowScene
else
{
return
0
};
guard
let
window
=
windowScene
.
windows
.
first
else
{
return
0
};
return
window
.
safeAreaInsets
.
bottom
;
}
return
0
;
}
///获取系统版本号
func
IOSVersion
()
->
Double
{
return
(
UIDevice
.
current
.
systemVersion
as
NSString
)
.
doubleValue
}
///组件化用类名创建控制器
func
ClassFromString
(
className
:
String
)
->
UIViewController
?
{
let
appName
=
Bundle
.
main
.
object
(
forInfoDictionaryKey
:
"CFBundleName"
)
let
name
=
"
\(
appName
!
)
.
\(
className
)
"
if
let
tmpClass
=
NSClassFromString
(
name
)
as?
UIViewController
.
Type
{
return
tmpClass
.
init
()
}
else
{
return
nil
}
}
/** 判断字符串是否为空 */
func
kIsEmpty
(
string
:
String
)
->
Bool
{
if
string
.
isEmpty
||
string
==
""
{
return
true
}
else
{
return
false
}
}
/** 文字大小设置
* parameter name 字体名字 (为空时默认字体)
* parameter size 字体大小
*/
func
kFont
(
name
:
String
=
""
,
size
:
CGFloat
)
->
UIFont
{
if
!
kIsEmpty
(
string
:
name
)
{
return
UIFont
.
init
(
name
:
name
,
size
:
size
)
!
}
else
{
return
UIFont
.
systemFont
(
ofSize
:
size
)
}
}
func
kBoldFont
(
name
:
String
=
""
,
size
:
CGFloat
)
->
UIFont
{
if
!
kIsEmpty
(
string
:
name
)
{
return
UIFont
.
init
(
name
:
name
,
size
:
size
)
!
}
else
{
return
UIFont
.
boldSystemFont
(
ofSize
:
size
)
}
}
/// 版本号相同:
func
systemVersionEqual
(
version
:
String
)
->
Bool
{
return
UIDevice
.
current
.
systemVersion
==
version
}
/// 系统版本高于等于该version 测试发现只能传入带一位小数点的版本号 不然会报错 具体原因待探究
func
systemVersionGreaterThan
(
version
:
String
)
->
Bool
{
return
UIDevice
.
current
.
systemVersion
.
compare
(
version
,
options
:
.
numeric
,
range
:
version
.
startIndex
..<
version
.
endIndex
,
locale
:
Locale
(
identifier
:
version
))
!=
ComparisonResult
.
orderedAscending
}
//判断是否是 x、及x以上 系列
func
isIphoneX
()
->
Bool
{
return
k_Height_safeAreaInsetsBottom
()
>
0.0
// 底部安全区 > 0 时,
}
/// 根据RGBA生成颜色(格式为:22,22,22,0.5)
var
YHRGBAColor
:
(
CGFloat
,
CGFloat
,
CGFloat
,
CGFloat
)
->
UIColor
=
{
red
,
green
,
blue
,
alpha
in
return
UIColor
(
red
:
red
/
255
,
green
:
green
/
255
,
blue
:
blue
/
255
,
alpha
:
alpha
)
}
/// 根据RGB生成颜色(格式为:22,22,22)
var
YHRGBColor
:
(
CGFloat
,
CGFloat
,
CGFloat
)
->
UIColor
=
{
red
,
green
,
blue
in
return
UIColor
(
red
:
red
/
255
,
green
:
green
/
255
,
blue
:
blue
/
255
,
alpha
:
1
)
}
/// 根据色值生成颜色(无透明度)(格式为0xffffff)
var
YHColorWithHex
:
(
NSInteger
)
->
UIColor
=
{
hex
in
return
UIColor
(
red
:
((
CGFloat
)((
hex
&
0xFF0000
)
>>
16
))
/
255.0
,
green
:
((
CGFloat
)((
hex
&
0xFF00
)
>>
8
))
/
255.0
,
blue
:
((
CGFloat
)(
hex
&
0xFF
))
/
255.0
,
alpha
:
1
)
}
class
YhConstant
{
class
YhConstant
{
// MARK: - URL 相关
// MARK: - URL 相关
struct
URL
{
struct
URL
{
...
...
galaxy/galaxy/Classes/Tools/NetWork/YHNetRequest.swift
View file @
4802f89b
...
@@ -12,7 +12,7 @@ class YHNetRequest: NSObject {
...
@@ -12,7 +12,7 @@ class YHNetRequest: NSObject {
///成功回调
///成功回调
typealias
SuccessHandlerType
=
(([
String
:
Any
],
Int
)
->
Void
)
typealias
SuccessHandlerType
=
(([
String
:
Any
],
Int
)
->
Void
)
///失败回调
///失败回调
typealias
FailureHandlerType
=
((
YHNetError
)
->
Void
)
typealias
FailureHandlerType
=
((
YHNetError
Model
)
->
Void
)
///请求类型
///请求类型
private
var
requestType
:
HTTPMethod
=
.
post
private
var
requestType
:
HTTPMethod
=
.
post
/// URL
/// URL
...
@@ -87,7 +87,7 @@ class YHNetRequest: NSObject {
...
@@ -87,7 +87,7 @@ class YHNetRequest: NSObject {
let
errorResponseMsg
=
string
.
error
?
.
localizedDescription
??
""
let
errorResponseMsg
=
string
.
error
?
.
localizedDescription
??
""
_
=
string
.
error
?
.
_code
_
=
string
.
error
?
.
_code
let
resultValue
=
string
.
value
??
""
let
resultValue
=
string
.
value
??
""
let
serverDict
=
self
.
converStringToMap
(
fromStr
:
resultValue
)
let
serverDict
=
resultValue
.
toDictionary
(
)
switch
responseResult
{
switch
responseResult
{
case
.
success
:
case
.
success
:
// resultFlag = true
// resultFlag = true
...
@@ -112,12 +112,16 @@ class YHNetRequest: NSObject {
...
@@ -112,12 +112,16 @@ class YHNetRequest: NSObject {
}
}
break
break
}
}
if
statusCode
==
200
{
if
statusCode
==
200
{
if
let
suclock
=
self
.
success
{
if
let
suclock
=
self
.
success
{
suclock
(
serverDict
,
statusCode
)
suclock
(
serverDict
,
statusCode
)
}
}
}
else
{
}
else
{
let
errorModel
=
YHNetError
.
init
()
let
errorModel
=
YHNetError
Model
.
init
()
errorModel
.
responseErrorType
=
.
failType
errorModel
.
responseErrorType
=
.
failType
if
let
errorBlock
=
self
.
failure
{
if
let
errorBlock
=
self
.
failure
{
errorModel
.
responseStatusCode
=
statusCode
errorModel
.
responseStatusCode
=
statusCode
...
@@ -127,16 +131,6 @@ class YHNetRequest: NSObject {
...
@@ -127,16 +131,6 @@ class YHNetRequest: NSObject {
}
}
}
}
}
}
func
converStringToMap
(
fromStr
:
String
=
""
)
->
[
String
:
Any
]
{
let
serverData
=
fromStr
.
data
(
using
:
String
.
Encoding
.
utf8
)
do
{
let
serverDict
=
try
JSONSerialization
.
jsonObject
(
with
:
serverData
!
,
options
:
JSONSerialization
.
ReadingOptions
.
mutableContainers
)
as?
[
String
:
Any
]
return
serverDict
!
}
catch
{
return
[
String
:
Any
]()
}
}
}
}
extension
YHNetRequest
{
extension
YHNetRequest
{
...
@@ -149,7 +143,7 @@ extension YHNetRequest {
...
@@ -149,7 +143,7 @@ extension YHNetRequest {
}
}
}
}
class
YHNetError
:
NSObject
{
class
YHNetError
Model
{
var
responseStatusCode
:
Int
=
0
var
responseStatusCode
:
Int
=
0
var
responseStatusCodeStr
:
String
=
""
var
responseStatusCodeStr
:
String
=
""
var
errResponseMsg
:
String
=
""
var
errResponseMsg
:
String
=
""
...
@@ -166,6 +160,6 @@ enum NetResponseErrorType: Int {
...
@@ -166,6 +160,6 @@ enum NetResponseErrorType: Int {
//
//
// print(succeseResponse,responseCode)
// print(succeseResponse,responseCode)
//
//
// } failBlock: {
MiruairNetError
in
// } failBlock: {
errorModel
in
//
//
//}
//}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment