Commit afce10340f33d70e5ed86a78469a89cf16124a08

Authored by 张旭
1 parent 87ff1164

多次刷新banner重复问题 , 接口错误,无网页面

metaCode/Classes/Common/Base/CNLiveBaseTabBarViewController.swift
... ... @@ -19,8 +19,8 @@ class CNTabBar:UITabBar{
19 19 //我们需要在age属性发生变化后,更新一下nickName这个属性
20 20 didSet
21 21 {
22   - print("frame = ", frame)
23   - print("完成")
  22 +// print("frame = ", frame)
  23 +// print("完成")
24 24 }
25 25 }
26 26 }
... ...
metaCode/Classes/Main/HomePage/Controller/CNMetaCodeHomePageController.swift
... ... @@ -18,33 +18,91 @@ let CNKeyIsFirstAppearUpSlideHomeGuide: String = "isFirstAppearUpSlideHomeGuideK
18 18 ///存储是否第一次显示首页下滑引导
19 19 let CNKeyIsFirstAppearDownSlideHomeGuide: String = "isFirstAppearDownSlideHomeGuideKey"
20 20  
21   -///用户身份认证状态
22   -enum UserIdentityStatus {
23   - ///未认证
24   - case notCertified
25   - ///已经认证
26   - case haveBeenCertified
  21 +/////用户身份认证状态
  22 +//enum UserIdentityStatus {
  23 +// ///未认证
  24 +// case notCertified
  25 +// ///已经认证
  26 +// case haveBeenCertified
  27 +//}
  28 +
  29 +///数据状态
  30 +enum NetAPIStatus {
  31 + ///接口成功
  32 + case success
  33 + ///接口错误
  34 + case apiError
  35 + ///无网络
  36 + case notNetwork
27 37 }
28 38  
29 39 class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDelegate, NewPagedFlowViewDataSource, CNCustomIndexViewDelegate{
30 40  
31   - ///添加认证View
32   - lazy var addCertificationView: CNCertificationView = {
33   - let addCertificationView = CNCertificationView(frame: self.view.bounds)
  41 +
  42 + ///NewPagedFlowView 开始滑动时的偏移量
  43 + private var beginOffset = 0.0
  44 + ///tabBar 的Y坐标位置
  45 + private var tabBarY:CGFloat = 0.0
  46 +
  47 + ///用户身份认证状态
  48 +// private var identityStatus: UserIdentityStatus = .notCertified
  49 + ///接口状态
  50 + private var NetApiStatus: NetAPIStatus = .apiError
  51 +
  52 + // MARK: - 懒加载
  53 + ///数据源
  54 + lazy var dataArray: NSMutableArray = {
34 55  
35   - addCertificationView.addCertificationAction = {
36   - [weak self] in
37   - print("添加认证")
38   - //模拟认证成功刷新主页面
39   - let time = DispatchTime.now() + 2.0
40   - DispatchQueue.main.asyncAfter(deadline: time, execute: DispatchWorkItem(block: {
41   - self?.addCertificationView.isHidden = true
42   - self?.addCertificationView.removeFromSuperview()
43   - self?.addPageView()
44   - }))
45   - }
46   - return addCertificationView
  56 + return NSMutableArray.init()
  57 + }()
  58 +
  59 + ///无网.接口失败View
  60 + lazy var notNetworkView: UIView = {
  61 + let W = Width-50
  62 + let H = W*1.5
  63 + let notNetworkView = UIView.init(frame: CGRect(x: 25, y: KSreenHeight*0.16, width: W, height: H ))
  64 + notNetworkView.backgroundColor = UIColor.white
  65 + notNetworkView.clipsToBounds = true
  66 + notNetworkView.layer.cornerRadius = 20
  67 +
  68 + //接口错误Label
  69 +
  70 + return notNetworkView
  71 + }()
  72 +
  73 + //接口错误图片
  74 + lazy var errorImgView: UIImageView = {
  75 + let errorImgView = UIImageView.init(image: UIImage(named: "mine_list_source_unusual_failed"))
  76 + errorImgView.contentMode = .scaleToFill
  77 + return errorImgView
47 78 }()
  79 +
  80 + //接口错误Label
  81 + lazy var errorLabel: UILabel = {
  82 + let errorLabel = UILabel.init()
  83 + errorLabel.textColor = HexColor("#666666")
  84 + errorLabel.textAlignment = .center
  85 + errorLabel.font = Font(15)
  86 + errorLabel.backgroundColor = .clear
  87 + errorLabel.text = "网络开小差了,刷新试试~"
  88 + return errorLabel
  89 + }()
  90 +
  91 + //接口错误刷新按钮
  92 + lazy var errorFreshButton : UIButton = {
  93 + let errorFreshButton = UIButton(type: .custom)
  94 + errorFreshButton.backgroundColor = .clear
  95 + errorFreshButton.addTarget(self, action: #selector(errorFreshButtonAction), for: .touchUpInside)
  96 + errorFreshButton.layer.borderColor = HexColor("#609BFF")?.cgColor
  97 + errorFreshButton.layer.borderWidth = 0.5
  98 + errorFreshButton.setTitle("刷新", for:.normal)
  99 + errorFreshButton.titleLabel?.font = Font(13)
  100 + errorFreshButton.setTitleColor(HexColor("#609BFF"), for: .normal)
  101 + errorFreshButton.clipsToBounds = true
  102 + errorFreshButton.layer.cornerRadius = 10.5
  103 + return errorFreshButton
  104 + }()
  105 +
48 106 ///上滑引导View
49 107 lazy var upSlideGuideView:CNHomePageGuideView = {
50 108 let upSlideGuideView = CNHomePageGuideView.init(frame: UIScreen.main.bounds)
... ... @@ -91,22 +149,6 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel
91 149 return gif
92 150 }()
93 151  
94   -
95   - ///NewPagedFlowView 开始滑动时的偏移量
96   - private var beginOffset = 0.0
97   - ///tabBar 的Y坐标位置
98   - private var tabBarY:CGFloat = 0.0
99   -
100   - ///用户身份认证状态
101   - private var identityStatus: UserIdentityStatus = .notCertified
102   -
103   - // MARK: - 懒加载
104   - ///数据源
105   - lazy var dataArray: NSMutableArray = {
106   -
107   - return NSMutableArray.init()
108   - }()
109   -
110 152 ///左右滑动分页view
111 153 lazy var pageFlowView: NewPagedFlowView = {
112 154 let pageFlowView = NewPagedFlowView.init(frame: CGRectMake(0, 0, Width, Height))
... ... @@ -150,43 +192,7 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel
150 192 super.viewWillAppear(animated)
151 193  
152 194 print("uid = ",UserInfoManager.shared.userInfo.uid)
153   - print("1111")
154   -
155   -// let db = CNIdentityDB()
156   -//
157   -//
158   -// let model = CNIdentityModel()
159   -// model.id = "q_123"
160   -// model.name = "小米"
161   -// db.insterObject(object: model)
162   -//
163   -// let model2 = CNIdentityModel()
164   -// model2.id = "a_451"
165   -// model2.name = "小明"
166   -// db.insterObject(object: model2)
167   -//
168   -// let model4 = CNIdentityModel()
169   -// model4.id = "3_234"
170   -// model4.name = "小张"
171   -// db.insterObject(object: model4)
172   -//
173   -//
174   -// let time:DispatchTime = DispatchTime.now() + 2.0
175   -// DispatchQueue.main.asyncAfter(deadline: time, execute: DispatchWorkItem(block: {
176   -//
177   -// let modelNew = CNIdentityModel()
178   -// modelNew.id = "a_451"
179   -// modelNew.name = "小张"
180   -// modelNew.icon = "http://apple.com"
181   -// modelNew.createTime = "1234555223"
182   -// modelNew.enable = true
183   -// db.updateObject(newObject: modelNew)
184   -//
185   -// let allData = CNIdentityDB().searchAllObject()
186   -// print(allData)
187   -//
188   -// }))
189   -
  195 + self.getUserIdentityApi()
190 196  
191 197 }
192 198 override func viewDidAppear(_ animated: Bool) {
... ... @@ -201,15 +207,51 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel
201 207 func setupUI(){
202 208 self.view.backgroundColor = KVCBackgroupColor
203 209 self.view.addSubview(self.backgroupView)
  210 + self.view.addSubview(self.notNetworkView)
  211 + self.notNetworkView.addSubview(self.errorImgView)
  212 + self.notNetworkView.addSubview(self.errorLabel)
  213 + self.notNetworkView.addSubview(self.errorFreshButton)
  214 +
  215 + self.makeConstraints()
204 216  
205   - switch self.identityStatus{
206   -
207   - case .notCertified:
208   - self.view.addSubview(self.addCertificationView)
209   - case .haveBeenCertified:
210   - self.addPageView()
  217 +// switch self.identityStatus{
  218 +//
  219 +// case .notCertified:
  220 +// self.view.addSubview(self.addCertificationView)
  221 +// case .haveBeenCertified:
  222 +// self.addPageView()
  223 +// }
  224 +
  225 + }
  226 +
  227 + // MARK: - <##>按钮点击事件
  228 + //无网时刷新
  229 + @objc func errorFreshButtonAction(){
  230 + self.getUserIdentityApi()
  231 + }
  232 +
  233 + // MARK: - <##>添加约束
  234 + func makeConstraints(){
  235 + self.errorImgView.snp.makeConstraints { make in
  236 + make.centerX.equalToSuperview()
  237 + make.centerY.equalToSuperview().offset(-60)
  238 + make.width.equalTo(190.5)
  239 + make.height.equalTo(100)
  240 + }
  241 +
  242 + self.errorLabel.snp.makeConstraints { make in
  243 + make.centerX.equalToSuperview()
  244 + make.top.equalTo(errorImgView.snp.bottom).offset(10.5)
  245 + make.width.equalToSuperview()
  246 + make.height.equalTo(21)
  247 + }
  248 +
  249 + self.errorFreshButton.snp.makeConstraints { make in
  250 + make.centerX.equalToSuperview()
  251 + make.top.equalTo(errorLabel.snp.bottom).offset(15)
  252 + make.width.equalTo(60)
  253 + make.height.equalTo(26)
211 254 }
212   -
213 255  
214 256 }
215 257  
... ... @@ -281,7 +323,6 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel
281 323  
282 324 if(currentOffset > beginOffset){
283 325  
284   -
285 326 if let rightView = self.backgroupView.getRightView(){
286 327  
287 328 if let currentApearView = self.backgroupView.currentApearView{
... ... @@ -382,52 +423,59 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel
382 423 }
383 424 }
384 425 //MARK: - 网络请求获取身份列表
385   - func getUserIdentityApi(){
386   - CNLiveMineViewModel.requestAuthStandList(page: 1) { result, respStatue in
  426 + func getUserIdentityApi()
  427 + {
  428 + CNLiveMineViewModel.requestAuthStandList(page: 1)
  429 + { result, respStatue in
  430 +
387 431 if respStatue == .success{
  432 + self.NetApiStatus = .success
388 433 let listArray:NSArray = (result as! StandListBaseModel).list as NSArray
389 434 if (listArray.count > 0){
390   - self.addCertificationView.isHidden = true
391   - self.addCertificationView.removeFromSuperview()
  435 +// self.addCertificationView.isHidden = true
  436 +// self.addCertificationView.removeFromSuperview()
  437 + self.dataArray = NSMutableArray.init()
392 438 self.dataArray.addObjects(from: listArray as! [Any])
393 439 self.addPageView()
394   - self.identityStatus = .haveBeenCertified
  440 +
  441 +// self.identityStatus = .haveBeenCertified
395 442 self.backgroupView.updateData(idArray: listArray as! Array<StandListModel>)
396 443 }else{
397   - self.identityStatus = .notCertified
  444 + self.NetApiStatus = .apiError
  445 +// self.identityStatus = .notCertified
398 446 }
399 447 }
400 448 else if (respStatue == .failed){
401   -// showMessage(message: "")
402   -
403   - // TODO: 需做接口失败页面UI
  449 + self.NetApiStatus = .apiError
404 450 }else if (respStatue == .noNetwork){
405   -// showMessage(message: "网络未连接")
406   - // TODO: 需做无网络页面UI
  451 + self.NetApiStatus = .notNetwork
407 452 }
  453 + self.notNetworkSetting()
408 454 }
409 455 }
410   -// func getUserIdentityApi(){
411   -// CNLiveHomePageViewModel.getUserIdentityApi { listArray, responseType, errorMsg in
412   -// switch responseType{
413   -// case .success:
414   -// if(listArray.count>0){
415   -// self.addCertificationView.isHidden = true
416   -// self.addCertificationView.removeFromSuperview()
417   -// self.dataArray.addObjects(from: listArray)
418   -// self.addPageView()
419   -// self.identityStatus = .haveBeenCertified
420   -// self.backgroupView.updateData(idArray: listArray )
421   -// }else{
422   -// self.identityStatus = .notCertified
423   -// }
424   -//
425   -// case .failed:
426   -// showMessage(message: errorMsg)
427   -// case .noNetwork:
428   -// showMessage(message: "网络未连接")
429   -// }
430   -// }
431   -// }
432 456  
  457 + //无网络,接口失败 配置
  458 + func notNetworkSetting(){
  459 + switch NetApiStatus{
  460 + case .success://隐藏无网,错误页面,显示UI
  461 + self.pageFlowView.scrollView.isUserInteractionEnabled = true
  462 + self.pageFlowView.isHidden = false
  463 + self.notNetworkView.isHidden = true
  464 + case .apiError://显示错误页面,隐藏UI
  465 + self.pageFlowView.scrollView.isUserInteractionEnabled = false
  466 + self.pageFlowView.isHidden = true
  467 + self.notNetworkView.isHidden = false
  468 + errorImgView.image = UIImage(named: "mine_list_source_unusual_failed")
  469 + errorLabel.text = "接口请求错误,刷新试试~"
  470 + case .notNetwork://显示无网页面,隐藏UI
  471 + self.pageFlowView.scrollView.isUserInteractionEnabled = false
  472 + self.pageFlowView.isHidden = true
  473 + self.notNetworkView.isHidden = false
  474 + errorImgView.image = UIImage(named: "mine_list_source_unusual_noNet")
  475 + errorLabel.text = "网络开小差了,刷新试试~"
  476 + }
  477 +
  478 +
  479 + }
  480 +
433 481 }
... ...
metaCode/Classes/Main/HomePage/View/CNCustomIndexView.swift
... ... @@ -249,6 +249,11 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange
249 249 // self.addGestureRecognizer(singleTap)
250 250 // }
251 251  
  252 + // MARK: - <##>设置前置视图容器
  253 + func isHiddenMainFrontContentView(isHidden:Bool){
  254 + self.mainView.isHiddenMainFrontContentView(isHidden: isHidden)
  255 + }
  256 +
252 257 // MARK: - 设置颜色值跟随ScrollView滑动变化
253 258 func addColorManager()
254 259 {
... ...
metaCode/Classes/Main/HomePage/View/CNHomePageBackgroupView.swift
... ... @@ -24,9 +24,9 @@ class CNHomePageBackgroupSubView : UIView
24 24 }()
25 25  
26 26 lazy var titleLabel: UILabel = {
27   - let titleLabel = UILabel.init(frame: CGRectMake(25, KNavigationHeight - 20, KSreenWidth - 100, 35))
  27 + let titleLabel = UILabel.init(frame: CGRectMake(25, KNavigationHeight - 20, KSreenWidth - 50, 35))
28 28 titleLabel.textColor = .white
29   - titleLabel.font = UIFont.systemFont(ofSize: 24, weight: .semibold)
  29 + titleLabel.font = UIFont.systemFont(ofSize: 20, weight: .semibold)
30 30 return titleLabel
31 31 }()
32 32  
... ... @@ -93,10 +93,16 @@ class CNHomePageBackgroupView: UIView{
93 93 //创建UI
94 94 func initUI(){
95 95  
96   -
97 96 }
98 97  
99 98 func updateData(idArray:Array<StandListModel>){
  99 + let array = self.subviews
  100 + for i in (0..<array.count){
  101 + let obj:UIView = array[i]
  102 + obj.removeFromSuperview()
  103 + }
  104 + self.dataArray = Array<CNHomePageBackgroupSubView>()
  105 +
100 106 for i in (0..<idArray.count){
101 107  
102 108 let subView: CNHomePageBackgroupSubView = CNHomePageBackgroupSubView.init(frame: self.bounds)
... ... @@ -106,7 +112,7 @@ class CNHomePageBackgroupView: UIView{
106 112 let navTitle:String = idModel.name!
107 113 subView.setTitle(title: navTitle)
108 114  
109   - subView.imageView.kf.setImage(with: URL(string: idModel.backgroundImg),placeholder: UIImage(named: "homePage_backgroup_red"))
  115 + subView.imageView.kf.setImage(with: URL(string: idModel.backgroundImg),placeholder: UIImage(named: "homePage_backgroup_blue"))
110 116  
111 117 //更新双向链表
112 118 let lastSubView: CNHomePageBackgroupSubView? = self.dataArray.last
... ... @@ -144,7 +150,7 @@ class CNHomePageBackgroupView: UIView{
144 150 }
145 151 ///获取当前视图右边的子视图
146 152 func getRightView()->CNHomePageBackgroupSubView?{
147   - if(currentApearViewIndex == self.dataArray.count - 1){
  153 + if(currentApearViewIndex >= self.dataArray.count - 1){
148 154 return nil
149 155 }
150 156 return dataArray[currentApearViewIndex + 1]
... ... @@ -174,7 +180,6 @@ class CNHomePageBackgroupView: UIView{
174 180 }
175 181 //更新当前显示的view所处的位置
176 182 self.currentApearViewIndex = toIndex
177   -
178 183  
179 184 //重置之前的currentApearView的Left 和 right
180 185 tempSubView?.maskLayer.left = 0;
... ...
metaCode/Classes/Main/HomePage/View/CNMainView.swift
... ... @@ -28,6 +28,22 @@ class CNFrontMainView : UIView{
28 28 fatalError("init(coder:) has not been implemented")
29 29 }
30 30  
  31 + //接口失败,无网络
  32 +// lazy var errorView: UIView = {
  33 +//
  34 +// }()
  35 +
  36 + //视图总容器
  37 + lazy var frontContentView : UIView = {
  38 +
  39 + let frontContentView = UIView.init(frame: CGRect(x: 0, y: 0, width: self.width, height: self.height ))
  40 + frontContentView.backgroundColor = UIColor.white
  41 + frontContentView.clipsToBounds = true
  42 + frontContentView.layer.cornerRadius = 20
  43 + frontContentView.addSubview(self.contentView)
  44 + return frontContentView
  45 + }()
  46 +
31 47 lazy var textView: UITextView = {
32 48 let textView = UITextView.init()
33 49  
... ... @@ -36,7 +52,10 @@ class CNFrontMainView : UIView{
36 52 textView.textAlignment = .left
37 53 textView.contentMode = .scaleAspectFill
38 54 textView.sizeToFit()
39   - textView.backgroundColor = .yellow
  55 + textView.backgroundColor = HexColor("#004FE0", alpha: 0.1)
  56 + textView.clipsToBounds = true
  57 + textView.layer.cornerRadius = 14
  58 + textView.isUserInteractionEnabled = false
40 59 return textView
41 60 }()
42 61  
... ... @@ -59,7 +78,7 @@ class CNFrontMainView : UIView{
59 78 let addStandBtn = UIButton(type: .custom)
60 79 addStandBtn.clipsToBounds = true
61 80 addStandBtn.layer.cornerRadius = 19.5
62   - addStandBtn.backgroundColor = .white
  81 + addStandBtn.backgroundColor = HexColor("#004FE0")
63 82 addStandBtn.setTitle("点击添加身份", for: .normal)
64 83 addStandBtn.setTitleColor(.white, for: .normal)
65 84 addStandBtn.titleLabel?.font = UIFont.init(name: "PingFangSC-Medium", size: 14)
... ... @@ -67,6 +86,7 @@ class CNFrontMainView : UIView{
67 86 return addStandBtn
68 87 }()
69 88  
  89 + //前置视图容器
70 90 lazy var contentView : UIView = {
71 91  
72 92 let contentView = UIView.init(frame: CGRect(x: 0, y: 0, width: self.width, height: self.height ))
... ... @@ -119,11 +139,8 @@ class CNFrontMainView : UIView{
119 139 //显示textview 添加身份
120 140 self.textView.isHidden = false
121 141 self.textView.text = newValue!.description
122   - var backgroundColor = "#004FE0"
123   - if (newValue!.backgroundColor != ""){
124   - backgroundColor = newValue!.backgroundColor
125   - }
126   - addStandBtn.backgroundColor = HexColor(backgroundColor )
  142 + addStandBtn.backgroundColor = HexColor(newValue!.backgroundColor)
  143 + textView.backgroundColor = HexColor(newValue!.backgroundColor, alpha: 0.1)
127 144 }
128 145 _idModel = newValue
129 146 }
... ... @@ -132,7 +149,8 @@ class CNFrontMainView : UIView{
132 149  
133 150 func initUI()
134 151 {
135   - self.addSubview(self.contentView)
  152 + self.addSubview(self.frontContentView)
  153 + self.frontContentView.addSubview(self.contentView)
136 154 }
137 155  
138 156 // MARK: - <##>按钮点击事件
... ... @@ -140,7 +158,8 @@ class CNFrontMainView : UIView{
140 158 tapTransformAciton!()
141 159 }
142 160 @objc func addStandBtnAction() {
143   -
  161 + //跳转到添加身份页面
  162 +
144 163 }
145 164 }
146 165  
... ... @@ -261,7 +280,7 @@ class CNMainView : UIView{
261 280 {
262 281 self.addSubview(self.frontView)
263 282 self.addSubview(self.backView)
264   -
  283 +
265 284  
266 285 self.backView.isHidden = true;
267 286  
... ... @@ -273,6 +292,11 @@ class CNMainView : UIView{
273 292  
274 293 }
275 294  
  295 + // MARK: - <##><##>设置前置视图容器
  296 + func isHiddenMainFrontContentView(isHidden:Bool){
  297 + self.frontView.contentView.isHidden = isHidden
  298 + }
  299 +
276 300 // MARK: - 事件
277 301  
278 302 ///旋转到反面
... ...
metaCode/Classes/Main/MinePage/ViewModel/CNLiveMineBaseModel.swift
... ... @@ -135,21 +135,21 @@ class StandListBaseModel: BaseModel {
135 135  
136 136 class StandListModel: BaseModel {
137 137  
138   - var icon: String?
139   - var name: String?
140   - var enable: Bool = false
141   - var id: Int = 0
142   - var createTime: Int = 0
  138 + var icon: String?//小圆图标
  139 + var name: String?//名称
  140 + var enable: Bool = false//没用
  141 + var id: Int = 0//ID号
  142 + var createTime: Int = 0//注册时间
143 143 var createTimeString: String = ""
144 144 var timeString: String = ""
145   - var auth: Bool = false
146   - var backgroundImg: String = ""
147   - var backgroundColor: String = ""
  145 + var auth: Bool = false//身份是否验证
  146 + var backgroundImg: String = ""//首页背景图
  147 + var backgroundColor: String = ""//添加身份按钮背景色
148 148 var backgroundColour: String = ""
149   - var description: String = ""
150   - var cardImg: String = ""
  149 + var description: String = ""//首页身份说明描述
  150 + var cardImg: String = ""//卡片背景图
151 151 var downPath: String = ""
152   -
  152 +
153 153 override func mapping(mapper: HelpingMapper) {
154 154 mapper <<<
155 155 self.createTime <-- TransformOf(fromJSON: { [weak self] (raw) -> Int in
... ...