浏览代码

首页按钮、找老师,视频课

Steven 6 月之前
父节点
当前提交
1a21c3d816
共有 64 个文件被更改,包括 1320 次插入793 次删除
  1. 28 10
      KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj
  2. 1 1
      KulexiuForStudent/KulexiuForStudent.xcodeproj/xcshareddata/xcschemes/KulexiuForStudent.xcscheme
  3. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/course_tips.imageset/course_tips@2x.png
  4. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/course_tips.imageset/course_tips@3x.png
  5. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_course_bg.imageset/Contents.json
  6. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_course_bg.imageset/home_course_bg@2x.png
  7. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_course_bg.imageset/home_course_bg@3x.png
  8. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_course_detail.imageset/Contents.json
  9. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_course_detail.imageset/home_course_detail@2x.png
  10. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_course_detail.imageset/home_course_detail@3x.png
  11. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_train_bg.imageset/Contents.json
  12. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_train_bg.imageset/home_train_bg@2x.png
  13. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_train_bg.imageset/home_train_bg@3x.png
  14. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_train_detail.imageset/Contents.json
  15. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_train_detail.imageset/home_train_detail@2x.png
  16. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_train_detail.imageset/home_train_detail@3x.png
  17. 6 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/Contents.json
  18. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/courseCard_bg.imageset/Contents.json
  19. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/courseCard_bg.imageset/courseCard_bg@2x.png
  20. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/courseCard_bg.imageset/courseCard_bg@3x.png
  21. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/course_card_next.imageset/Contents.json
  22. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/course_card_next.imageset/course_card_next@2x.png
  23. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/course_card_next.imageset/course_card_next@3x.png
  24. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_bg.imageset/Contents.json
  25. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_bg.imageset/member_card_bg@2x.png
  26. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_bg.imageset/member_card_bg@3x.png
  27. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_bg_s.imageset/Contents.json
  28. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_bg_s.imageset/member_card_bg_s@2x.png
  29. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_bg_s.imageset/member_card_bg_s@3x.png
  30. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_next.imageset/Contents.json
  31. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_next.imageset/member_card_next@2x.png
  32. 二进制
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_next.imageset/member_card_next@3x.png
  33. 99 267
      KulexiuForStudent/KulexiuForStudent/Module/Home/Controller/HomeViewController.m
  34. 5 5
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeBanner/HomeBannerCell.xib
  35. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeBanner/HomeBannerView.m
  36. 7 7
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeBanner/HomeBannerView.xib
  37. 6 9
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeButton/HomeButtonView.h
  38. 4 2
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeButton/HomeButtonView.m
  39. 7 47
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeButton/HomeButtonView.xib
  40. 6 6
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeButton/KSHomeButton.xib
  41. 24 0
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeCount/HomeCountView.h
  42. 55 0
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeCount/HomeCountView.m
  43. 176 0
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeCount/HomeCountView.xib
  44. 6 36
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotTalent/HomeHotTalentCell.m
  45. 29 59
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotTalent/HomeHotTalentCell.xib
  46. 2 1
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotTalent/HomeHotTalentView.m
  47. 16 16
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotTalent/HomeHotTalentView.xib
  48. 67 65
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotVideoCourse/HomeHotVideoCell.xib
  49. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotVideoCourse/HomeHotVideoCourseView.m
  50. 13 13
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotVideoCourse/HomeHotVideoCourseView.xib
  51. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/PublicNoticeView.m
  52. 16 6
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/PublicNoticeView.xib
  53. 2 0
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/RecentCourse/HomeRecentCourseView.h
  54. 19 31
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/RecentCourse/HomeRecentCourseView.m
  55. 58 51
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/RecentCourse/HomeRecentCourseView.xib
  56. 3 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserInfo.h
  57. 18 1
      KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserInfo.m
  58. 24 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Controller/MineViewController.m
  59. 25 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/KSMemberView.h
  60. 143 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/KSMemberView.m
  61. 194 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/KSMemberView.xib
  62. 3 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.h
  63. 24 72
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.m
  64. 33 85
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.xib

+ 28 - 10
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -466,8 +466,6 @@
 		BC50171727FC0D8E00F8BCBC /* SubjectChooseBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC50171627FC0D8D00F8BCBC /* SubjectChooseBodyView.xib */; };
 		BC5367C2283F6D4D008428E8 /* HomeLiveCourseView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5367C1283F6D4C008428E8 /* HomeLiveCourseView.m */; };
 		BC5367C4283F6D58008428E8 /* HomeLiveCourseView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5367C3283F6D58008428E8 /* HomeLiveCourseView.xib */; };
-		BC5367C7283F6D6B008428E8 /* HomeVideoCourseView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5367C6283F6D6B008428E8 /* HomeVideoCourseView.m */; };
-		BC5367C9283F6D72008428E8 /* HomeVideoCourseView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5367C8283F6D72008428E8 /* HomeVideoCourseView.xib */; };
 		BC542E3B284079D600633781 /* UserAuthViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E39284079D600633781 /* UserAuthViewController.m */; };
 		BC542E3F284079E300633781 /* UserAuthBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E3C284079E200633781 /* UserAuthBodyView.m */; };
 		BC542E40284079E300633781 /* UserAuthBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC542E3E284079E300633781 /* UserAuthBodyView.xib */; };
@@ -741,6 +739,10 @@
 		BCB6348627F6D29600ACFDCF /* LiveSeatApplyCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6345C27F6D29600ACFDCF /* LiveSeatApplyCell.m */; };
 		BCB635A627F6D90600ACFDCF /* KSLiveEmptyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB635A427F6D90600ACFDCF /* KSLiveEmptyView.m */; };
 		BCB635A927F6D93300ACFDCF /* KSChatVideoView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB635A727F6D93300ACFDCF /* KSChatVideoView.m */; };
+		BCB6F4612CF6AFE6000D8805 /* KSMemberView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6F4602CF6AFE6000D8805 /* KSMemberView.m */; };
+		BCB6F4632CF6AFEE000D8805 /* KSMemberView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCB6F4622CF6AFEE000D8805 /* KSMemberView.xib */; };
+		BCB6F4672CF6CD86000D8805 /* HomeCountView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6F4662CF6CD86000D8805 /* HomeCountView.m */; };
+		BCB6F4692CF6CD8C000D8805 /* HomeCountView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCB6F4682CF6CD8C000D8805 /* HomeCountView.xib */; };
 		BCB9090B2852EE9600F5FF69 /* KSLiveWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB9090A2852EE9600F5FF69 /* KSLiveWebViewController.m */; };
 		BCB9090D2852EEBE00F5FF69 /* LiveCard.bundle in Resources */ = {isa = PBXBuildFile; fileRef = BCB9090C2852EEBE00F5FF69 /* LiveCard.bundle */; };
 		BCB909132852EF0000F5FF69 /* KSDragWindowManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB909112852EF0000F5FF69 /* KSDragWindowManager.m */; };
@@ -1868,9 +1870,6 @@
 		BC5367C0283F6D4C008428E8 /* HomeLiveCourseView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeLiveCourseView.h; sourceTree = "<group>"; };
 		BC5367C1283F6D4C008428E8 /* HomeLiveCourseView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeLiveCourseView.m; sourceTree = "<group>"; };
 		BC5367C3283F6D58008428E8 /* HomeLiveCourseView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeLiveCourseView.xib; sourceTree = "<group>"; };
-		BC5367C5283F6D6B008428E8 /* HomeVideoCourseView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeVideoCourseView.h; sourceTree = "<group>"; };
-		BC5367C6283F6D6B008428E8 /* HomeVideoCourseView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeVideoCourseView.m; sourceTree = "<group>"; };
-		BC5367C8283F6D72008428E8 /* HomeVideoCourseView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeVideoCourseView.xib; sourceTree = "<group>"; };
 		BC542E39284079D600633781 /* UserAuthViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserAuthViewController.m; sourceTree = "<group>"; };
 		BC542E3A284079D600633781 /* UserAuthViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserAuthViewController.h; sourceTree = "<group>"; };
 		BC542E3C284079E200633781 /* UserAuthBodyView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserAuthBodyView.m; sourceTree = "<group>"; };
@@ -2263,6 +2262,12 @@
 		BCB635A527F6D90600ACFDCF /* KSLiveEmptyView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSLiveEmptyView.h; sourceTree = "<group>"; };
 		BCB635A727F6D93300ACFDCF /* KSChatVideoView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSChatVideoView.m; sourceTree = "<group>"; };
 		BCB635A827F6D93300ACFDCF /* KSChatVideoView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSChatVideoView.h; sourceTree = "<group>"; };
+		BCB6F45F2CF6AFE6000D8805 /* KSMemberView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KSMemberView.h; sourceTree = "<group>"; };
+		BCB6F4602CF6AFE6000D8805 /* KSMemberView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KSMemberView.m; sourceTree = "<group>"; };
+		BCB6F4622CF6AFEE000D8805 /* KSMemberView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KSMemberView.xib; sourceTree = "<group>"; };
+		BCB6F4652CF6CD86000D8805 /* HomeCountView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeCountView.h; sourceTree = "<group>"; };
+		BCB6F4662CF6CD86000D8805 /* HomeCountView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeCountView.m; sourceTree = "<group>"; };
+		BCB6F4682CF6CD8C000D8805 /* HomeCountView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCountView.xib; sourceTree = "<group>"; };
 		BCB909092852EE9600F5FF69 /* KSLiveWebViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KSLiveWebViewController.h; sourceTree = "<group>"; };
 		BCB9090A2852EE9600F5FF69 /* KSLiveWebViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KSLiveWebViewController.m; sourceTree = "<group>"; };
 		BCB9090C2852EEBE00F5FF69 /* LiveCard.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = LiveCard.bundle; sourceTree = "<group>"; };
@@ -3079,6 +3084,7 @@
 		275FA1F627E7356A00CFEA2E /* View */ = {
 			isa = PBXGroup;
 			children = (
+				BCB6F4642CF6CD78000D8805 /* HomeCount */,
 				BC5F764D29001C5A00B433E0 /* HomeDragButton */,
 				BC12639228FF8C1E00509E90 /* HomeNewMusic */,
 				BC12639128FF8C0300509E90 /* HomeRecommendMusic */,
@@ -3103,9 +3109,6 @@
 				BC5367C0283F6D4C008428E8 /* HomeLiveCourseView.h */,
 				BC5367C1283F6D4C008428E8 /* HomeLiveCourseView.m */,
 				BC5367C3283F6D58008428E8 /* HomeLiveCourseView.xib */,
-				BC5367C5283F6D6B008428E8 /* HomeVideoCourseView.h */,
-				BC5367C6283F6D6B008428E8 /* HomeVideoCourseView.m */,
-				BC5367C8283F6D72008428E8 /* HomeVideoCourseView.xib */,
 				BCBFDF4E28115D9A0052AFE5 /* HomeIntroduceView.h */,
 				BCBFDF4F28115D9A0052AFE5 /* HomeIntroduceView.m */,
 				BCBFDF5128115DA40052AFE5 /* HomeIntroduceView.xib */,
@@ -3327,6 +3330,9 @@
 				27F9033B27E87FE100C08A19 /* MineBodyView.xib */,
 				BC119286280FB3B000A716F7 /* KSStarView.h */,
 				BC119287280FB3B100A716F7 /* KSStarView.m */,
+				BCB6F45F2CF6AFE6000D8805 /* KSMemberView.h */,
+				BCB6F4602CF6AFE6000D8805 /* KSMemberView.m */,
+				BCB6F4622CF6AFEE000D8805 /* KSMemberView.xib */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -5768,6 +5774,16 @@
 			path = Cell;
 			sourceTree = "<group>";
 		};
+		BCB6F4642CF6CD78000D8805 /* HomeCount */ = {
+			isa = PBXGroup;
+			children = (
+				BCB6F4652CF6CD86000D8805 /* HomeCountView.h */,
+				BCB6F4662CF6CD86000D8805 /* HomeCountView.m */,
+				BCB6F4682CF6CD8C000D8805 /* HomeCountView.xib */,
+			);
+			path = HomeCount;
+			sourceTree = "<group>";
+		};
 		BCB9090E2852EF0000F5FF69 /* DragWindow */ = {
 			isa = PBXGroup;
 			children = (
@@ -6676,6 +6692,7 @@
 				BCC583C228A9EC6400BAB4CF /* cloud_animation_28.png in Resources */,
 				BC802D8728B872B40079E350 /* KSLiveAlertView.xib in Resources */,
 				BC8C2C7F28265D8E00FBA5D5 /* KSNewsAlert.xib in Resources */,
+				BCB6F4692CF6CD8C000D8805 /* HomeCountView.xib in Resources */,
 				BCC0F6552A8CD8F500C4EFA4 /* TXChatBottomView.xib in Resources */,
 				BC494A7D286958EC00CCD343 /* MusicRoomCourseInfoCell.xib in Resources */,
 				BC38C4592AFA095D00ABFCC2 /* MineWorksOpenDisplayCell.xib in Resources */,
@@ -6729,7 +6746,6 @@
 				BC2DFF5B28C097D60056105A /* talentAnimation.json in Resources */,
 				BC89AC152AB0844700B077AF /* TenantHotMusicView.xib in Resources */,
 				BCCE95D32AB0410600AB6385 /* darkEmptyAnimation.json in Resources */,
-				BC5367C9283F6D72008428E8 /* HomeVideoCourseView.xib in Resources */,
 				BC71D25F288804CD0010F14B /* img_45.png in Resources */,
 				BCC0F65B2A8CD8F500C4EFA4 /* TxClassroomChatOtherCell.xib in Resources */,
 				2723B66127F15CFB00E0B90B /* SettingBodyView.xib in Resources */,
@@ -6913,6 +6929,7 @@
 				2723B66F27F15CFC00E0B90B /* AboutUsBodyView.xib in Resources */,
 				275FA23827E7356B00CFEA2E /* FirstSettingBodyView.xib in Resources */,
 				BC83A83B2AD2825F0033D48B /* TenantNotiferMessageCell.xib in Resources */,
+				BCB6F4632CF6AFEE000D8805 /* KSMemberView.xib in Resources */,
 				BC542E622840A60E00633781 /* UseBodyView.xib in Resources */,
 				BC106C422A9339FB000759A9 /* LiveAlertView.xib in Resources */,
 				BCC583B428A9EC6400BAB4CF /* cloud_animation_9.png in Resources */,
@@ -7201,7 +7218,6 @@
 				BC106C122A933829000759A9 /* TXLiveMessagePauseLive.m in Sources */,
 				BC31BF102B21925700F7D538 /* MetronomeManager.m in Sources */,
 				BCC0F65A2A8CD8F500C4EFA4 /* TxClassroomChatMineCell.m in Sources */,
-				BC5367C7283F6D6B008428E8 /* HomeVideoCourseView.m in Sources */,
 				BC802D8528B872AB0079E350 /* KSLiveAlertView.m in Sources */,
 				BC9AA0B52ABC1C2400CD954D /* GroupQuitAlert.m in Sources */,
 				BCC409042AFCE6B500C60249 /* KSVideoImageSlider.m in Sources */,
@@ -7430,6 +7446,7 @@
 				BCC0F6ED2A8CE4AF00C4EFA4 /* ZoomControl.m in Sources */,
 				BCC409002AFCE6B500C60249 /* VideoCoverChooseView.m in Sources */,
 				BCA336992C942B280074DF75 /* KSSourceDownloadAlert.m in Sources */,
+				BCB6F4672CF6CD86000D8805 /* HomeCountView.m in Sources */,
 				BCF472E72AB019CD0032BE16 /* TenantDarkViewController.m in Sources */,
 				BC83A83E2AD28A9F0033D48B /* TenantNotiferNavView.m in Sources */,
 				BC106C032A933829000759A9 /* TXLiveMessageOpenLive.m in Sources */,
@@ -7473,6 +7490,7 @@
 				BC38C4532AFA095D00ABFCC2 /* UserMusicFormalModel.m in Sources */,
 				BC0D1F71281015B000C5D9E5 /* VideoCourseCell.m in Sources */,
 				BC43CACB2A88C9570011EB5D /* KSTXBaseChatViewController.m in Sources */,
+				BCB6F4612CF6AFE6000D8805 /* KSMemberView.m in Sources */,
 				BC542E612840A60E00633781 /* UseBodyView.m in Sources */,
 				BCC0F6C22A8CDDEB00C4EFA4 /* Whiteboard.m in Sources */,
 				BCFC09D12C48B3D7009A727F /* KSAccompanyDraftViewController.m in Sources */,

+ 1 - 1
KulexiuForStudent/KulexiuForStudent.xcodeproj/xcshareddata/xcschemes/KulexiuForStudent.xcscheme

@@ -92,7 +92,7 @@
       buildConfiguration = "Debug">
    </AnalyzeAction>
    <ArchiveAction
-      buildConfiguration = "Release"
+      buildConfiguration = "DEV"
       revealArchiveInOrganizer = "YES">
    </ArchiveAction>
 </Scheme>

二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/course_tips.imageset/course_tips@2x.png


二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/course_tips.imageset/course_tips@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_course_bg.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "home_course_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "home_course_bg@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_course_bg.imageset/home_course_bg@2x.png


二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_course_bg.imageset/home_course_bg@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_course_detail.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "home_course_detail@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "home_course_detail@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_course_detail.imageset/home_course_detail@2x.png


二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_course_detail.imageset/home_course_detail@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_train_bg.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "home_train_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "home_train_bg@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_train_bg.imageset/home_train_bg@2x.png


二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_train_bg.imageset/home_train_bg@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_train_detail.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "home_train_detail@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "home_train_detail@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_train_detail.imageset/home_train_detail@2x.png


二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_train_detail.imageset/home_train_detail@3x.png


+ 6 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/courseCard_bg.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "courseCard_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "courseCard_bg@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/courseCard_bg.imageset/courseCard_bg@2x.png


二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/courseCard_bg.imageset/courseCard_bg@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/course_card_next.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "course_card_next@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "course_card_next@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/course_card_next.imageset/course_card_next@2x.png


二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/course_card_next.imageset/course_card_next@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_bg.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "member_card_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "member_card_bg@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_bg.imageset/member_card_bg@2x.png


二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_bg.imageset/member_card_bg@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_bg_s.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "member_card_bg_s@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "member_card_bg_s@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_bg_s.imageset/member_card_bg_s@2x.png


二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_bg_s.imageset/member_card_bg_s@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_next.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "member_card_next@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "member_card_next@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_next.imageset/member_card_next@2x.png


二进制
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/CardImage/member_card_next.imageset/member_card_next@3x.png


+ 99 - 267
KulexiuForStudent/KulexiuForStudent/Module/Home/Controller/HomeViewController.m

@@ -75,13 +75,11 @@
 #import "HomeMusicSheetLayout.h"
 #import "HomeArrangeCourseController.h"
 
+#import "HomeCountView.h"
+#import "KSTabBarViewController.h"
+
 #define COLLECTION_WIDTH ((NSInteger)(IS_IPAD ? KPortraitWidth * 0.7 : KPortraitWidth * 0.83))
 #define COLLECTION_HEIGHT (320)
-#define BUTTONWIDTH (65)
-#define BUTTONHEIGHT (80)
-
-#define BUTTON_ROWCOUNT (IS_IPAD ? 7 : 5)
-
 
 @interface HomeViewController ()<JXPagerViewDelegate, JXPagerMainTableViewGestureDelegate,JXCategoryViewDelegate,SDCycleScrollViewDelegate,UIScrollViewDelegate,UICollectionViewDelegate, UICollectionViewDelegateFlowLayout,UICollectionViewDataSource,TYCyclePagerViewDataSource,TYCyclePagerViewDelegate>
 
@@ -99,11 +97,13 @@
 @property (nonatomic, strong) NSMutableArray *bannerArray; // banner 数据
 @property (nonatomic, assign) CGFloat bannerViewHeight; // banner 高度
 
+// 统计
+@property (nonatomic, strong) HomeCountView *countView;
+@property (nonatomic, assign) CGFloat countViewHeight;
+
 // 按钮
 @property (nonatomic, strong) HomeButtonView *buttonContainer; // button container
-@property (nonatomic, strong) UIScrollView *buttonScrollView;
 @property (nonatomic, strong) NSMutableArray *buttonArray; // button 内容
-@property (nonatomic, assign) NSInteger buttonDotWidth;
 @property (nonatomic, assign) CGFloat buttonViewHeight; // button view 高度
 
 // 公告
@@ -131,12 +131,6 @@
 @property (nonatomic, strong) NSMutableArray *videoCourseArray; // 视频课数据
 @property (nonatomic, assign) CGFloat videoViewHeight; // video 高度
 
-// 直播课
-@property (nonatomic, strong) HomeHotLiveCourseView *liveCourseView;
-@property (nonatomic, strong) UICollectionView *liveCollectionView; // 直播课容器
-@property (nonatomic, strong) NSMutableArray *liveCourseArray; // 直播课数据
-@property (nonatomic, assign) CGFloat liveViewHeight; // live 高度
-
 @property (nonatomic, strong) dispatch_group_t requestGroup;
 
 // 顶部数据容器
@@ -165,6 +159,7 @@
 @property (nonatomic, strong) HomeDragButton *suspendButton;
 
 @property (nonatomic, assign) CGFloat headheight;
+
 @end
 
 @implementation HomeViewController
@@ -202,27 +197,37 @@
     [self.headView addSubview:self.bannerView];
     self.bannerViewHeight = CGFLOAT_MIN;
     [self.bannerView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.left.right.top.mas_equalTo(self.headView);
+        make.top.mas_equalTo(self.headView.mas_top).offset(12);
+        make.left.right.mas_equalTo(self.headView);
         make.height.mas_equalTo(self.bannerViewHeight);
     }];
     self.bannerView.hidden = YES;
     
-    // 按钮
-    [self.headView addSubview:self.buttonContainer];
-    self.buttonViewHeight = CGFLOAT_MIN;
-    [self.buttonContainer mas_makeConstraints:^(MASConstraintMaker *make) {
+    // 统计
+    [self.headView addSubview:self.countView];
+    self.countViewHeight = [HomeCountView getViewHeight];
+    [self.countView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.right.mas_equalTo(self.headView);
         make.top.mas_equalTo(self.bannerView.mas_bottom);
+        make.height.mas_equalTo(self.countViewHeight);
+    }];
+    
+    // 最近课程
+    [self.headView addSubview:self.courseView];
+    self.courseViewHeight = CGFLOAT_MIN;
+    [self.courseView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.mas_equalTo(self.headView);
+        make.top.mas_equalTo(self.countView.mas_bottom);
         make.height.mas_equalTo(CGFLOAT_MIN);
     }];
-    self.buttonContainer.hidden = YES;
+    self.courseView.hidden = YES;
     
     // 公告
     [self.headView addSubview:self.noticeView];
     self.noticeViewHeight = CGFLOAT_MIN;
     [self.noticeView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.right.mas_equalTo(self.headView);
-        make.top.mas_equalTo(self.buttonContainer.mas_bottom);
+        make.top.mas_equalTo(self.courseView.mas_bottom);
         make.height.mas_equalTo(CGFLOAT_MIN);
     }];
     [self.noticeView.adView addSubview:self.noticeScrollView];
@@ -230,23 +235,23 @@
         make.top.left.right.bottom.mas_equalTo(self.noticeView.adView);
     }];
     self.noticeView.hidden = YES;
-    
-    // 最近课程
-    [self.headView addSubview:self.courseView];
-    self.courseViewHeight = CGFLOAT_MIN;
-    [self.courseView mas_makeConstraints:^(MASConstraintMaker *make) {
+
+    // 按钮
+    [self.headView addSubview:self.buttonContainer];
+    self.buttonViewHeight = CGFLOAT_MIN;
+    [self.buttonContainer mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.right.mas_equalTo(self.headView);
         make.top.mas_equalTo(self.noticeView.mas_bottom);
         make.height.mas_equalTo(CGFLOAT_MIN);
     }];
-    self.courseView.hidden = YES;
+    self.buttonContainer.hidden = YES;
     
-    // 推荐老师
+    // 老师
     [self.headView addSubview:self.talentView];
     self.talentViewHeight = CGFLOAT_MIN;
     [self.talentView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.right.mas_equalTo(self.headView);
-        make.top.mas_equalTo(self.courseView.mas_bottom);
+        make.top.mas_equalTo(self.buttonContainer.mas_bottom);
         make.height.mas_equalTo(self.talentViewHeight);
     }];
     self.talentView.hidden = YES;
@@ -260,19 +265,10 @@
         make.height.mas_equalTo(self.videoViewHeight);
     }];
     self.videoCourseView.hidden = YES;
-    // 直播
-    [self.headView addSubview:self.liveCourseView];
-    self.liveViewHeight = CGFLOAT_MIN;
-    [self.liveCourseView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.left.right.mas_equalTo(self.headView);
-        make.top.mas_equalTo(self.videoCourseView.mas_bottom);
-        make.height.mas_equalTo(self.liveViewHeight);
-    }];
-    self.liveCourseView.hidden = YES;
     
     [self.headBgView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.right.mas_equalTo(self.headView);
-        make.top.mas_equalTo(self.bannerView.mas_top);
+        make.top.mas_equalTo(self.headView.mas_top);
         make.bottom.mas_equalTo(self.buttonContainer.mas_bottom);
     }];
     
@@ -284,9 +280,9 @@
 }
 
 - (void)refreshHeadHeight {
-//    CGFloat bottomSpace = 20.0f;
+    CGFloat headSpace = 12.0f;
     CGFloat bottomSpace = 0.0f;
-    self.headViewHeight = self.bannerViewHeight + self.buttonViewHeight + self.noticeViewHeight + self.courseViewHeight + self.talentViewHeight + self.liveViewHeight + self.videoViewHeight + bottomSpace;
+    self.headViewHeight = headSpace + self.bannerViewHeight + self.countViewHeight + self.courseViewHeight + self.noticeViewHeight + self.buttonViewHeight + self.talentViewHeight + self.videoViewHeight + bottomSpace;
     [self.pagerView resizeTableHeaderViewHeightWithAnimatable:NO duration:0.3f curve:UIViewAnimationCurveEaseInOut];
 }
 
@@ -529,6 +525,9 @@
     }];
 }
 
+- (void)requestStatistics {
+//    dispatch_group_enter(self.requestGroup);
+}
 
 - (void)requestCourseInfo {
     
@@ -537,13 +536,6 @@
         dispatch_group_leave(self.requestGroup);
         if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
             NSDictionary *sourceDic = [dic ks_dictionaryValueForKey:@"data"];
-            NSArray *liveList = [sourceDic ks_arrayValueForKey:@"liveList"];
-            NSMutableArray *liveCourse = [NSMutableArray array];
-            for (NSDictionary *parm in liveList) {
-                HomeLiveGroupModel *model = [[HomeLiveGroupModel alloc] initWithDictionary:parm];
-                [liveCourse addObject:model];
-            }
-            self.liveCourseArray = [NSMutableArray arrayWithArray:liveCourse];
             
             NSArray *videoList = [sourceDic ks_arrayValueForKey:@"videoList"];
             NSMutableArray *videoCourse = [NSMutableArray array];
@@ -714,9 +706,7 @@
     [self refreshTalentView];
     // 课程
     [self refreshCourseView];
-    
-    // 刷新排序
-    [self refreshViewLocation];
+
     [self refreshHeadHeight];
     
     [self refreshPageView];
@@ -824,71 +814,7 @@
     [self.talentCollectionView reloadData];
 }
 
-- (void)refreshViewLocation {
-    // 如果有课程和公告 且有按钮
-    CGFloat buttonViewDefaultHeight = self.buttonArray.count > BUTTON_ROWCOUNT ? [HomeButtonView getViewHeight] : [HomeButtonView getViewHeight] - 20;
-    
-    if (self.noticeTitleArray.count && self.recentCourseModel && self.buttonArray.count) {
-        self.noticeViewHeight = [PublicNoticeView getViewHeight];
-        [self.noticeView mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.left.right.mas_equalTo(self.headView);
-            make.top.mas_equalTo(self.bannerView.mas_bottom);
-            make.height.mas_equalTo(self.noticeViewHeight);
-        }];
-        self.buttonViewHeight = buttonViewDefaultHeight;
-        [self.buttonContainer mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.left.right.mas_equalTo(self.headView);
-            make.top.mas_equalTo(self.noticeView.mas_bottom);
-            make.height.mas_equalTo(self.buttonViewHeight);
-        }];
-        self.courseViewHeight = 91.0f;
-        [self.courseView mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.left.right.mas_equalTo(self.headView);
-            make.top.mas_equalTo(self.buttonContainer.mas_bottom);
-            make.height.mas_equalTo(self.courseViewHeight);
-        }];
-        
-        [self.headBgView mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.left.right.mas_equalTo(self.headView);
-            make.top.mas_equalTo(self.bannerView.mas_top);
-            make.bottom.mas_equalTo(self.buttonContainer.mas_bottom);
-        }];
-    }
-    else {
-        CGFloat spaceCutDown = 0.0f;
-        if (self.noticeArray.count) {
-            spaceCutDown = 20.0f;
-        }
-        
-        self.buttonViewHeight = self.buttonArray.count ? buttonViewDefaultHeight - spaceCutDown : CGFLOAT_MIN;
-        [self.buttonContainer mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.left.right.mas_equalTo(self.headView);
-            make.top.mas_equalTo(self.bannerView.mas_bottom);
-            make.height.mas_equalTo(self.buttonViewHeight);
-        }];
-        self.noticeViewHeight = self.noticeTitleArray.count ? [PublicNoticeView getViewHeight] : CGFLOAT_MIN;
-        [self.noticeView mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.left.right.mas_equalTo(self.headView);
-            make.top.mas_equalTo(self.buttonContainer.mas_bottom);
-            make.height.mas_equalTo(self.noticeViewHeight);
-        }];
-        
-        [self.headBgView mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.left.right.mas_equalTo(self.headView);
-            make.top.mas_equalTo(self.bannerView.mas_top);
-            make.bottom.mas_equalTo(self.noticeView.mas_bottom);
-        }];
-        
-        CGFloat courseViewHeight = self.recentCourseModel ? 90.0f : CGFLOAT_MIN;
-        self.courseViewHeight = courseViewHeight;
-        [self.courseView mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.left.right.mas_equalTo(self.headView);
-            make.top.mas_equalTo(self.noticeView.mas_bottom);
-            make.height.mas_equalTo(self.courseViewHeight);
-        }];
-        
-    }
-}
+
 
 - (void)refreshBannaerView {
     
@@ -916,45 +842,38 @@
 }
 
 - (void)showButtonMessage {
-    
+    [self.buttonContainer.buttonContentView removeAllSubViews];
+    CGFloat buttonSpace = (KPortraitWidth - BUTTON_ROWCOUNT * HOME_BUTTONWIDTH) / (BUTTON_ROWCOUNT + 1);
     // 添加按钮
     if (self.buttonArray.count) {
         self.buttonContainer.hidden = NO;
-        if (self.buttonArray.count > BUTTON_ROWCOUNT) { // 大于4个显示底部滚动视图
-            self.buttonContainer.buttonPageCtrl.hidden = NO;
-            self.buttonContainer.buttonDotLeft.constant = 0;
-            NSInteger addPage = (self.buttonArray.count % BUTTON_ROWCOUNT) > 0 ? 1 : 0;
-            NSInteger pageCount = self.buttonArray.count / BUTTON_ROWCOUNT + addPage;
-            self.buttonDotWidth = 36 / pageCount;
-            self.buttonContainer.buttonDotWidth.constant = self.buttonDotWidth;
-            self.buttonScrollView.contentSize = CGSizeMake(KPortraitWidth * pageCount, BUTTONHEIGHT);
-        }
-        else {
-            self.buttonContainer.buttonPageCtrl.hidden = YES;
-            self.buttonScrollView.contentSize = CGSizeMake(KPortraitWidth, BUTTONHEIGHT);
+        CGFloat xSpace = 0.0f;
+        CGFloat ySpace = 0.0f;
+        for (NSInteger i = 0; i < self.buttonArray.count; i++) {
+            xSpace = buttonSpace / 2 + (i % BUTTON_ROWCOUNT) * (HOME_BUTTONWIDTH + buttonSpace);
+            ySpace = (i / BUTTON_ROWCOUNT) * HOME_BUTTONHEIGHT;
+            HomeMessageModel *model = self.buttonArray[i];
+            KSHomeButton *buttonView = [KSHomeButton shareInstance];
+            
+            [buttonView.buttonImage sd_setImageWithURL:[NSURL URLWithString:[model.coverImage getUrlEndcodeString]]];
+            buttonView.buttonTitle.text = model.title;
+            buttonView.frame = CGRectMake(xSpace, ySpace, HOME_BUTTONWIDTH, HOME_BUTTONHEIGHT);
+
+            buttonView.actionButton.tag = 3000 + i;
+            [buttonView.actionButton addTarget:self action:@selector(HomeTopButtonAction:) forControlEvents:UIControlEventTouchUpInside];
+            [self.buttonContainer.buttonContentView addSubview:buttonView];
         }
     }
     else {
         self.buttonContainer.hidden = YES;
-        self.buttonContainer.buttonPageCtrl.hidden = YES;
-        self.buttonScrollView.contentSize = CGSizeMake(KPortraitWidth, CGFLOAT_MIN);
     }
     
-        
-    self.buttonScrollView.contentOffset = CGPointMake(0, 0);
-    [self.buttonScrollView removeAllSubViews];
-    CGFloat buttonSpace = (KPortraitWidth - BUTTON_ROWCOUNT * BUTTONWIDTH) / (BUTTON_ROWCOUNT + 1);
-    for (NSInteger i = 0; i < self.buttonArray.count; i++) {
-        HomeMessageModel *model = self.buttonArray[i];
-        KSHomeButton *buttonView = [KSHomeButton shareInstance];
-        
-        [buttonView.buttonImage sd_setImageWithURL:[NSURL URLWithString:[model.coverImage getUrlEndcodeString]]];
-        buttonView.buttonTitle.text = model.title;
-        buttonView.frame = CGRectMake(buttonSpace + (i % BUTTON_ROWCOUNT) * (BUTTONWIDTH + buttonSpace) + (i / BUTTON_ROWCOUNT) * KPortraitWidth, 0, BUTTONWIDTH, BUTTONHEIGHT);
-        buttonView.actionButton.tag = 3000 + i;
-        [buttonView.actionButton addTarget:self action:@selector(HomeTopButtonAction:) forControlEvents:UIControlEventTouchUpInside];
-        [self.buttonScrollView addSubview:buttonView];
-    }
+    // 高度
+    CGFloat buttonViewDefaultHeight = [HomeButtonView getViewHeight:self.buttonArray.count];
+    self.buttonViewHeight = buttonViewDefaultHeight;
+    [self.buttonContainer mas_updateConstraints:^(MASConstraintMaker *make) {
+        make.height.mas_equalTo(buttonViewDefaultHeight);
+    }];
 }
 
 - (void)HomeTopButtonAction:(UIButton *)sender {
@@ -999,18 +918,7 @@
 }
 
 - (void)refreshCourseView {
-    // 课程
-    if (self.liveCourseArray.count) {
-        self.liveViewHeight = [HomeHotLiveCourseView getViewHeight];
-        self.liveCourseView.hidden = NO;
-    }
-    else {
-        self.liveViewHeight = CGFLOAT_MIN;
-        self.liveCourseView.hidden = YES;
-    }
-    [self.liveCourseView mas_updateConstraints:^(MASConstraintMaker *make) {
-        make.height.mas_equalTo(self.liveViewHeight);
-    }];
+    
     if (self.videoCourseArray.count) {
         self.videoViewHeight = [HomeHotVideoCourseView getViewHeight];
         self.videoCourseView.hidden = NO;
@@ -1024,7 +932,6 @@
     }];
     
     [self.videoCollectionView reloadData];
-    [self.liveCollectionView reloadData];
 }
 
 #pragma mark - JXPagerViewDelegate
@@ -1121,7 +1028,7 @@
 
 - (TYCyclePagerViewLayout *)layoutForPagerView:(TYCyclePagerView *)pageView {
     TYCyclePagerViewLayout *layout = [[TYCyclePagerViewLayout alloc]init];
-    layout.itemSize = CGSizeMake(KPortraitWidth - 28, (KPortraitWidth - 28) / 347 * 132);
+    layout.itemSize = CGSizeMake(KPortraitWidth, (KPortraitWidth - 28) / 347 * 132);
     layout.itemSpacing = 0;
     return layout;
     
@@ -1158,12 +1065,9 @@
     if (collectionView == self.talentCollectionView) { // 推荐老师
         return self.talentArray.count;
     }
-    else if (collectionView == self.videoCollectionView) { // 视频课
+    else/* if (collectionView == self.videoCollectionView)*/ { // 视频课
         return self.videoCourseArray.count;
     }
-    else { // 直播课
-        return self.liveCourseArray.count;
-    }
 }
 
 
@@ -1177,18 +1081,12 @@
         }];
         return cell;
     }
-    else if (collectionView == self.videoCollectionView) {
+    else /*if (collectionView == self.videoCollectionView)*/ { // 视频课
         HomeVideoGroupModel *model = self.videoCourseArray[indexPath.item];
         HomeHotVideoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"HomeHotVideoCell" forIndexPath:indexPath];
         [cell configWithSource:model];
         return cell;
     }
-    else {
-        HomeLiveGroupModel *model = self.liveCourseArray[indexPath.item];
-        HomeHotLiveCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"HomeHotLiveCell" forIndexPath:indexPath];
-        [cell configWithSource:model];
-        return cell;
-    }
 }
 
 - (void)followTalentTeacher:(NSString *)teacherId {
@@ -1234,20 +1132,13 @@
         TalentTeacherModel *model = self.talentArray[indexPath.item];
         [self displayTeacherDetail:[NSString stringWithFormat:@"%.0f",model.userId]];
     }
-    else if (collectionView == self.videoCollectionView) {  // 视频课
+    else /*if (collectionView == self.videoCollectionView)*/ {  // 视频课
         HomeVideoGroupModel *model = self.videoCourseArray[indexPath.row];
         NSString *url = [NSString stringWithFormat:@"%@%@%@", WEBHOST, @"/#/videoDetail?groupId=",model.videoGroupId];
         KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
         ctrl.url = url;
         [self.navigationController pushViewController:ctrl animated:YES];
     }
-    else if (collectionView == self.liveCollectionView) {   // 直播课详情
-        HomeLiveGroupModel *model = self.liveCourseArray[indexPath.row];
-        KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
-        NSString *url = [NSString stringWithFormat:@"%@%@%@", WEBHOST, @"/#/liveDetail?groupId=",model.courseGroupId];
-        ctrl.url = url;
-        [self.navigationController pushViewController:ctrl animated:YES];
-    }
 }
 
 // 老师风采
@@ -1259,10 +1150,7 @@
 
 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
     if (collectionView == self.talentCollectionView) {
-        if (IS_IPAD) {
-            return CGSizeMake(134, 178);
-        }
-        return CGSizeMake(110, 178);
+        return CGSizeMake(104, 146);
     }
     else if (collectionView == self.videoCollectionView) {
         if (IS_IPAD) {
@@ -1309,16 +1197,6 @@
             [self.navigationController pushViewController:ctrl animated:YES];
         }
             break;
-        case HOMENAV_TAG_SEARCH: // 搜索
-        {
-            HomeArrangeCourseController *ctrl = [[HomeArrangeCourseController alloc] init];
-            [self.navigationController pushViewController:ctrl animated:YES];
-            return;
-            KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
-            webCtrl.url = [NSString stringWithFormat:@"%@/#/music-songbook/search", WEBHOST];
-            [self.navigationController pushViewController:webCtrl animated:YES];
-        }
-            break;
         default:
             break;
     }
@@ -1374,7 +1252,7 @@
     if (!_bannerScroll) {
         _bannerScroll = [[TYCyclePagerView alloc] init];
         _bannerScroll.backgroundColor = [UIColor clearColor];
-        _bannerScroll.frame = CGRectMake(0, 0, KPortraitWidth - 28, (KPortraitWidth - 28) / 347 * 132);
+        _bannerScroll.frame = CGRectMake(0, 0, KPortraitWidth, (KPortraitWidth - 28) / 347 * 132);
         _bannerScroll.isInfiniteLoop = YES;
         _bannerScroll.autoScrollInterval = 3.0f;
         _bannerScroll.reloadDataNeedResetIndex = YES;
@@ -1418,35 +1296,40 @@
 
 #pragma mark ---- scroll view delegate
 - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
-    if (scrollView == self.buttonScrollView) {
-        NSInteger index = (NSInteger)(scrollView.contentOffset.x / (KPortraitWidth - 28));
-        
-        [UIView animateWithDuration:0.3f animations:^{
-            self.buttonContainer.buttonDotLeft.constant = index * self.buttonDotWidth;
+    
+}
+
+#pragma mark ---- countView
+- (HomeCountView *)countView {
+    if (!_countView) {
+        _countView = [HomeCountView sharedInstance];
+        MJWeakSelf;
+        [_countView countActionCallback:^(BOOL showCourseTable) {
+            [weakSelf homeStatisticsAction:showCourseTable];
         }];
     }
+    return _countView;
+}
+
+- (void)homeStatisticsAction:(BOOL)showCourseTable {
+    if (showCourseTable) {
+        [(KSTabBarViewController *)self.tabBarController tabBarSelectedWithIndex:2];
+    }
+    else {
+        KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
+        ctrl.url = [NSString stringWithFormat:@"%@%@",WEBHOST,@"/#/memberRecord"];
+        [self.navigationController pushViewController:ctrl animated:YES];
+    }
 }
 
 #pragma mark ---- button container
 - (HomeButtonView *)buttonContainer {
     if (!_buttonContainer) {
         _buttonContainer = [HomeButtonView shareInstance];
-        [_buttonContainer.buttonContentView addSubview:self.buttonScrollView];
     }
     return _buttonContainer;
 }
 
-- (UIScrollView *)buttonScrollView {
-    if (!_buttonScrollView) {
-        _buttonScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, KPortraitWidth, BUTTONHEIGHT)];
-        _buttonScrollView.backgroundColor = [UIColor clearColor];
-        _buttonScrollView.pagingEnabled = YES;
-        _buttonScrollView.showsHorizontalScrollIndicator = NO;
-        _buttonScrollView.showsVerticalScrollIndicator = NO;
-        _buttonScrollView.delegate = self;
-    }
-    return _buttonScrollView;
-}
 
 #pragma mark ---- notice view
 - (UIView *)headBgView {
@@ -1559,16 +1442,15 @@
     return _talentView;
 }
 
-- (void)teacherMoreIntorduce {
-    KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
-    ctrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/teacherElegant"];
+- (void)teacherMoreIntorduce { // 约课-VIP定制
+    HomeArrangeCourseController *ctrl = [[HomeArrangeCourseController alloc] init];
     [self.navigationController pushViewController:ctrl animated:YES];
 }
 
 - (UICollectionView *)talentCollectionView {
     if (!_talentCollectionView) {
         UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
-        layout.sectionInset = UIEdgeInsetsMake(12, 14, 12, 14);
+        layout.sectionInset = UIEdgeInsetsMake(0, 14, 0, 14);
         layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
         _talentCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
         _talentCollectionView.backgroundColor = [UIColor clearColor];
@@ -1635,59 +1517,9 @@
     return _videoCollectionView;
 }
 
-- (void)toVideoMorePage {
-    KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
-    ctrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/videoClass"];
-    [self.navigationController pushViewController:ctrl animated:YES];
-}
-
-#pragma mark ----- live course
-
-- (HomeHotLiveCourseView *)liveCourseView {
-    if (!_liveCourseView) {
-        _liveCourseView = [HomeHotLiveCourseView shareInstance];
-        MJWeakSelf;
-        [_liveCourseView homeLiveMore:^{
-            [weakSelf toLiveMorePage];
-        }];
-        [_liveCourseView.liveContentView addSubview:self.liveCollectionView];
-        [self.liveCollectionView mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.left.right.bottom.top.mas_equalTo(_liveCourseView.liveContentView);
-        }];
-    }
-    return _liveCourseView;
-}
-
-- (UICollectionView *)liveCollectionView {
-    if (!_liveCollectionView) {
-        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
-        layout.sectionInset = UIEdgeInsetsMake(12, 14, 12, 14);
-        layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
-        _liveCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
-        _liveCollectionView.backgroundColor = [UIColor clearColor];
-        _liveCollectionView.delegate = self;
-        _liveCollectionView.dataSource = self;
-        _liveCollectionView.showsVerticalScrollIndicator = NO;
-        _liveCollectionView.showsHorizontalScrollIndicator = NO;
-        if (@available(iOS 11.0, *)) {
-            _liveCollectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
-        } else {
-            // Fallback on earlier versions
-            if (@available(iOS 13.0, *)) {
-                _liveCollectionView.automaticallyAdjustsScrollIndicatorInsets = NO;
-            } else {
-                // Fallback on earlier versions
-            }
-        }
-        [_liveCollectionView registerNib:[UINib nibWithNibName:@"HomeHotLiveCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"HomeHotLiveCell"];
-    }
-    return _liveCollectionView;
-}
-
-// 更多直播课
-- (void)toLiveMorePage {
-    KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
-    ctrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/liveClass"];
+- (void)toVideoMorePage { // 约课-视频
+    HomeArrangeCourseController *ctrl = [[HomeArrangeCourseController alloc] init];
+    [ctrl displayWithIndex:DISPLAY_INDEX_VIEO];
     [self.navigationController pushViewController:ctrl animated:YES];
 }
 

+ 5 - 5
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeBanner/HomeBannerCell.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -18,7 +18,7 @@
                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                 <subviews>
                     <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="video_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="KRw-yx-PyP">
-                        <rect key="frame" x="0.0" y="0.0" width="389" height="143"/>
+                        <rect key="frame" x="14" y="0.0" width="361" height="143"/>
                         <userDefinedRuntimeAttributes>
                             <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                                 <real key="value" value="12"/>
@@ -29,10 +29,10 @@
             </view>
             <viewLayoutGuide key="safeArea" id="SEy-5g-ep8"/>
             <constraints>
-                <constraint firstAttribute="trailing" secondItem="KRw-yx-PyP" secondAttribute="trailing" id="E99-a0-3To"/>
+                <constraint firstAttribute="trailing" secondItem="KRw-yx-PyP" secondAttribute="trailing" constant="14" id="E99-a0-3To"/>
                 <constraint firstItem="KRw-yx-PyP" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="k9u-re-YWc"/>
                 <constraint firstAttribute="bottom" secondItem="KRw-yx-PyP" secondAttribute="bottom" id="nom-3g-a3v"/>
-                <constraint firstItem="KRw-yx-PyP" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="o6d-XR-yAa"/>
+                <constraint firstItem="KRw-yx-PyP" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="14" id="o6d-XR-yAa"/>
             </constraints>
             <size key="customSize" width="389" height="143"/>
             <connections>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeBanner/HomeBannerView.m

@@ -15,7 +15,7 @@
 }
 
 + (CGFloat)getViewHeight {
-    return (KPortraitWidth - 14 * 2) * 132 / 347 + 20;
+    return (KPortraitWidth - 14 * 2) * 132 / 347 + 12;
 }
 
 /*

+ 7 - 7
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeBanner/HomeBannerView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20037"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23504"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -14,16 +14,16 @@
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TxO-MH-UVa">
-                    <rect key="frame" x="14" y="10" width="386" height="165"/>
+                    <rect key="frame" x="0.0" y="0.0" width="414" height="173"/>
                     <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                 </view>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
-                <constraint firstAttribute="trailing" secondItem="TxO-MH-UVa" secondAttribute="trailing" constant="14" id="0r3-Rk-6nL"/>
-                <constraint firstItem="TxO-MH-UVa" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="BF3-AJ-S65"/>
-                <constraint firstAttribute="bottom" secondItem="TxO-MH-UVa" secondAttribute="bottom" constant="10" id="FoY-Yd-bSd"/>
-                <constraint firstItem="TxO-MH-UVa" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="zwG-j0-akh"/>
+                <constraint firstAttribute="trailing" secondItem="TxO-MH-UVa" secondAttribute="trailing" id="0r3-Rk-6nL"/>
+                <constraint firstItem="TxO-MH-UVa" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="BF3-AJ-S65"/>
+                <constraint firstAttribute="bottom" secondItem="TxO-MH-UVa" secondAttribute="bottom" constant="12" id="FoY-Yd-bSd"/>
+                <constraint firstItem="TxO-MH-UVa" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="zwG-j0-akh"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>

+ 6 - 9
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeButton/HomeButtonView.h

@@ -7,23 +7,20 @@
 
 #import <UIKit/UIKit.h>
 
+#define HOME_BUTTONWIDTH (70)
+#define HOME_BUTTONHEIGHT (80)
+//#define BUTTON_ROWCOUNT (IS_IPAD ? 7 : 5)
+#define BUTTON_ROWCOUNT (5)
+
 NS_ASSUME_NONNULL_BEGIN
 
 @interface HomeButtonView : UIView
 
 @property (weak, nonatomic) IBOutlet UIView *buttonContentView;
 
-@property (weak, nonatomic) IBOutlet UIView *buttonPageCtrl;
-
-@property (weak, nonatomic) IBOutlet UIView *pageDot;
-
-@property (weak, nonatomic) IBOutlet NSLayoutConstraint *buttonDotLeft;
-
-@property (weak, nonatomic) IBOutlet NSLayoutConstraint *buttonDotWidth;
-
 + (instancetype)shareInstance;
 
-+ (CGFloat)getViewHeight;
++ (CGFloat)getViewHeight:(NSInteger)buttonCount;
 
 @end
 

+ 4 - 2
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeButton/HomeButtonView.m

@@ -14,9 +14,11 @@
     return view;
 }
 
-+ (CGFloat)getViewHeight {
-    return 118.0;
++ (CGFloat)getViewHeight:(NSInteger)buttonCount {
+    NSInteger addRow = buttonCount % 5 == 0 ? 0 : 1;
+    return (buttonCount / 5 + addRow) * HOME_BUTTONHEIGHT + 20;
 }
+
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 7 - 47
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeButton/HomeButtonView.xib

@@ -1,63 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20037"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23504"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="HomeButtonView">
-            <rect key="frame" x="0.0" y="0.0" width="414" height="115"/>
+            <rect key="frame" x="0.0" y="0.0" width="414" height="153"/>
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FDF-ZT-TJx">
-                    <rect key="frame" x="0.0" y="5" width="414" height="100"/>
-                    <subviews>
-                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Hu0-Qz-IjA">
-                            <rect key="frame" x="189" y="86" width="36" height="4"/>
-                            <subviews>
-                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9Qq-0N-maI">
-                                    <rect key="frame" x="0.0" y="0.0" width="18" height="4"/>
-                                    <color key="backgroundColor" red="0.0039215686269999999" green="0.75686274509999996" blue="0.70980392160000005" alpha="1" colorSpace="calibratedRGB"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="18" id="HF0-79-ZOQ"/>
-                                    </constraints>
-                                    <userDefinedRuntimeAttributes>
-                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                            <real key="value" value="2"/>
-                                        </userDefinedRuntimeAttribute>
-                                    </userDefinedRuntimeAttributes>
-                                </view>
-                            </subviews>
-                            <color key="backgroundColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.92156862750000001" alpha="1" colorSpace="calibratedRGB"/>
-                            <constraints>
-                                <constraint firstItem="9Qq-0N-maI" firstAttribute="top" secondItem="Hu0-Qz-IjA" secondAttribute="top" id="03a-hK-kLd"/>
-                                <constraint firstAttribute="bottom" secondItem="9Qq-0N-maI" secondAttribute="bottom" id="AOu-5X-e7N"/>
-                                <constraint firstAttribute="width" constant="36" id="Ftu-7O-gVM"/>
-                                <constraint firstItem="9Qq-0N-maI" firstAttribute="leading" secondItem="Hu0-Qz-IjA" secondAttribute="leading" id="Gbt-lz-MWl"/>
-                                <constraint firstAttribute="height" constant="4" id="SEn-Hw-wmX"/>
-                            </constraints>
-                            <userDefinedRuntimeAttributes>
-                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                    <real key="value" value="2"/>
-                                </userDefinedRuntimeAttribute>
-                            </userDefinedRuntimeAttributes>
-                        </view>
-                    </subviews>
+                    <rect key="frame" x="0.0" y="0.0" width="414" height="133"/>
                     <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                    <constraints>
-                        <constraint firstItem="Hu0-Qz-IjA" firstAttribute="centerX" secondItem="FDF-ZT-TJx" secondAttribute="centerX" id="Hsr-mg-qWh"/>
-                        <constraint firstAttribute="height" constant="100" id="NcO-ha-Gmb"/>
-                        <constraint firstAttribute="bottom" secondItem="Hu0-Qz-IjA" secondAttribute="bottom" constant="10" id="YkV-kK-CMd"/>
-                    </constraints>
                 </view>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
-                <constraint firstItem="FDF-ZT-TJx" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="5" id="D3O-sT-Grz"/>
+                <constraint firstItem="FDF-ZT-TJx" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="D3O-sT-Grz"/>
+                <constraint firstAttribute="bottom" secondItem="FDF-ZT-TJx" secondAttribute="bottom" constant="20" id="Pl7-Yr-UlR"/>
                 <constraint firstItem="FDF-ZT-TJx" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="WkT-zx-U1t"/>
                 <constraint firstAttribute="trailing" secondItem="FDF-ZT-TJx" secondAttribute="trailing" id="vJG-sS-Gpn"/>
             </constraints>
@@ -66,12 +30,8 @@
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <connections>
                 <outlet property="buttonContentView" destination="FDF-ZT-TJx" id="736-Mg-5pC"/>
-                <outlet property="buttonDotLeft" destination="Gbt-lz-MWl" id="jQi-Dc-Y0g"/>
-                <outlet property="buttonDotWidth" destination="HF0-79-ZOQ" id="ogM-Ak-FDg"/>
-                <outlet property="buttonPageCtrl" destination="Hu0-Qz-IjA" id="VVs-D3-azH"/>
-                <outlet property="pageDot" destination="9Qq-0N-maI" id="Fa4-d7-dmt"/>
             </connections>
-            <point key="canvasLocation" x="131.8840579710145" y="37.834821428571423"/>
+            <point key="canvasLocation" x="131.8840579710145" y="49.888392857142854"/>
         </view>
     </objects>
 </document>

+ 6 - 6
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeButton/KSHomeButton.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -14,7 +14,7 @@
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="专项训练" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1ld-By-usD">
-                    <rect key="frame" x="2" y="53" width="76" height="17"/>
+                    <rect key="frame" x="2" y="63" width="76" height="17"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="17" id="HmM-NJ-9X6"/>
                     </constraints>
@@ -28,8 +28,8 @@
                         <constraint firstAttribute="width" constant="63.5" id="JSo-aS-lFI"/>
                     </constraints>
                 </button>
-                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_accompany" translatesAutoresizingMaskIntoConstraints="NO" id="fGp-yj-UZk">
-                    <rect key="frame" x="15" y="2" width="50" height="50"/>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_accompany" translatesAutoresizingMaskIntoConstraints="NO" id="fGp-yj-UZk">
+                    <rect key="frame" x="15" y="12" width="50" height="50"/>
                     <constraints>
                         <constraint firstAttribute="width" constant="50" id="a4B-wg-004"/>
                         <constraint firstAttribute="height" constant="50" id="xmk-HE-99v"/>
@@ -46,7 +46,7 @@
                 <constraint firstAttribute="trailing" secondItem="1ld-By-usD" secondAttribute="trailing" constant="2" id="bfB-Zj-nct"/>
                 <constraint firstItem="Z8s-SG-JhM" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="gyu-3P-I55"/>
                 <constraint firstItem="1ld-By-usD" firstAttribute="top" secondItem="fGp-yj-UZk" secondAttribute="bottom" constant="1" id="rks-6W-iJb"/>
-                <constraint firstItem="fGp-yj-UZk" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="2" id="t2k-gD-lM1"/>
+                <constraint firstItem="fGp-yj-UZk" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="12" id="t2k-gD-lM1"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>

+ 24 - 0
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeCount/HomeCountView.h

@@ -0,0 +1,24 @@
+//
+//  HomeCountView.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2024/11/27.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef void(^HomeCountCallback)(BOOL showCourseTable);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HomeCountView : UIView
+
++ (instancetype)sharedInstance;
+
+- (void)countActionCallback:(HomeCountCallback)callback;
+
++ (CGFloat)getViewHeight;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 55 - 0
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeCount/HomeCountView.m

@@ -0,0 +1,55 @@
+//
+//  HomeCountView.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2024/11/27.
+//
+
+#import "HomeCountView.h"
+
+@interface HomeCountView ()
+
+@property (nonatomic, copy) HomeCountCallback callback;
+
+@end
+
+@implementation HomeCountView
+
+
++ (instancetype)sharedInstance {
+    HomeCountView *view = [[[NSBundle mainBundle] loadNibNamed:@"HomeCountView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)countActionCallback:(HomeCountCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+- (IBAction)showPractice:(id)sender {
+    if (self.callback) {
+        self.callback(NO);
+    }
+}
+
+- (IBAction)showCourseTable:(id)sender {
+    if (self.callback) {
+        self.callback(YES);
+    }
+}
+
++ (CGFloat)getViewHeight {
+    CGFloat imageWidth = (KPortraitWidth - 14 * 2 - 9) / 2;
+    CGFloat height = imageWidth / 169 * 67 + 12;
+    return height;
+}
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 176 - 0
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeCount/HomeCountView.xib

@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="HomeCountView">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="79"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dpf-2v-Tdc">
+                    <rect key="frame" x="14" y="0.0" width="169" height="67"/>
+                    <subviews>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_train_bg" translatesAutoresizingMaskIntoConstraints="NO" id="yLw-P0-G2L">
+                            <rect key="frame" x="0.0" y="0.0" width="169" height="67"/>
+                            <constraints>
+                                <constraint firstAttribute="width" secondItem="yLw-P0-G2L" secondAttribute="height" multiplier="169:67" id="sqn-9n-qkm"/>
+                            </constraints>
+                        </imageView>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oDY-XN-D8Z">
+                            <rect key="frame" x="0.0" y="10.666666666666664" width="169" height="46"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iz2-em-w2S">
+                                    <rect key="frame" x="15" y="0.0" width="0.0" height="26"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="26" id="PAX-xD-imW"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" name="DINAlternate-Bold" family="DIN Alternate" pointSize="22"/>
+                                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="本周练习" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PAZ-aV-TR8">
+                                    <rect key="frame" x="14.999999999999996" y="30" width="55.666666666666657" height="16"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="16" id="YsV-ta-XD1"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.72549019607843135" green="0.51372549019607838" blue="0.26666666666666666" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_train_detail" translatesAutoresizingMaskIntoConstraints="NO" id="vEr-gN-zlm">
+                                    <rect key="frame" x="72.666666666666671" y="33" width="10" height="10"/>
+                                </imageView>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstAttribute="bottom" secondItem="PAZ-aV-TR8" secondAttribute="bottom" id="2SU-pP-chK"/>
+                                <constraint firstItem="PAZ-aV-TR8" firstAttribute="leading" secondItem="oDY-XN-D8Z" secondAttribute="leading" constant="15" id="2sF-bH-IPa"/>
+                                <constraint firstItem="vEr-gN-zlm" firstAttribute="leading" secondItem="PAZ-aV-TR8" secondAttribute="trailing" constant="2" id="4eL-vK-ttt"/>
+                                <constraint firstItem="iz2-em-w2S" firstAttribute="top" secondItem="oDY-XN-D8Z" secondAttribute="top" id="CjA-qR-qeS"/>
+                                <constraint firstItem="iz2-em-w2S" firstAttribute="leading" secondItem="oDY-XN-D8Z" secondAttribute="leading" constant="15" id="Mrb-Ef-i7k"/>
+                                <constraint firstItem="PAZ-aV-TR8" firstAttribute="top" secondItem="iz2-em-w2S" secondAttribute="bottom" constant="4" id="PIL-nj-1In"/>
+                                <constraint firstItem="vEr-gN-zlm" firstAttribute="centerY" secondItem="PAZ-aV-TR8" secondAttribute="centerY" id="hid-oi-evF"/>
+                            </constraints>
+                        </view>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5Gk-CG-jny">
+                            <rect key="frame" x="0.0" y="0.0" width="169" height="67"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <connections>
+                                <action selector="showPractice:" destination="iN0-l3-epB" eventType="touchUpInside" id="hIA-nD-7SD"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="bottom" secondItem="yLw-P0-G2L" secondAttribute="bottom" id="4TC-Xx-las"/>
+                        <constraint firstAttribute="trailing" secondItem="5Gk-CG-jny" secondAttribute="trailing" id="5OX-Ko-nNN"/>
+                        <constraint firstItem="yLw-P0-G2L" firstAttribute="top" secondItem="dpf-2v-Tdc" secondAttribute="top" id="C5Q-4O-Ylf"/>
+                        <constraint firstItem="oDY-XN-D8Z" firstAttribute="centerY" secondItem="dpf-2v-Tdc" secondAttribute="centerY" id="Den-5o-lYb"/>
+                        <constraint firstItem="5Gk-CG-jny" firstAttribute="leading" secondItem="dpf-2v-Tdc" secondAttribute="leading" id="Ftp-Ac-zHr"/>
+                        <constraint firstAttribute="trailing" secondItem="oDY-XN-D8Z" secondAttribute="trailing" id="HJw-X6-tgA"/>
+                        <constraint firstAttribute="bottom" secondItem="5Gk-CG-jny" secondAttribute="bottom" id="Nc5-Nz-jjS"/>
+                        <constraint firstItem="yLw-P0-G2L" firstAttribute="leading" secondItem="dpf-2v-Tdc" secondAttribute="leading" id="YFa-15-kg9"/>
+                        <constraint firstItem="oDY-XN-D8Z" firstAttribute="leading" secondItem="dpf-2v-Tdc" secondAttribute="leading" id="fbg-xu-9Cv"/>
+                        <constraint firstAttribute="trailing" secondItem="yLw-P0-G2L" secondAttribute="trailing" id="hxM-TG-ZMZ"/>
+                        <constraint firstItem="5Gk-CG-jny" firstAttribute="top" secondItem="dpf-2v-Tdc" secondAttribute="top" id="mC0-R4-ATz"/>
+                    </constraints>
+                </view>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7OX-Hg-VGQ">
+                    <rect key="frame" x="192" y="0.0" width="169" height="67"/>
+                    <subviews>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_course_bg" translatesAutoresizingMaskIntoConstraints="NO" id="xl6-ZM-TM5">
+                            <rect key="frame" x="0.0" y="0.0" width="169" height="67"/>
+                            <constraints>
+                                <constraint firstAttribute="width" secondItem="xl6-ZM-TM5" secondAttribute="height" multiplier="169:67" id="rSC-7w-f1r"/>
+                            </constraints>
+                        </imageView>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Cv0-0n-UBN">
+                            <rect key="frame" x="0.0" y="10.666666666666664" width="169" height="46"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2/6" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VYX-QP-S1C">
+                                    <rect key="frame" x="15.000000000000002" y="0.0" width="28.666666666666671" height="26"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="26" id="RL0-B3-iZT"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" name="DINAlternate-Bold" family="DIN Alternate" pointSize="22"/>
+                                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="本周课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f7K-nw-JKK">
+                                    <rect key="frame" x="14.999999999999996" y="30" width="55.666666666666657" height="16"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="16" id="ium-oH-gdn"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.33333333333333331" green="0.56862745098039214" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_course_detail" translatesAutoresizingMaskIntoConstraints="NO" id="N1P-RO-q2a">
+                                    <rect key="frame" x="72.666666666666686" y="33" width="10" height="10"/>
+                                </imageView>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstItem="N1P-RO-q2a" firstAttribute="leading" secondItem="f7K-nw-JKK" secondAttribute="trailing" constant="2" id="BXK-u4-8uT"/>
+                                <constraint firstItem="f7K-nw-JKK" firstAttribute="top" secondItem="VYX-QP-S1C" secondAttribute="bottom" constant="4" id="FiX-ZF-ddY"/>
+                                <constraint firstItem="N1P-RO-q2a" firstAttribute="centerY" secondItem="f7K-nw-JKK" secondAttribute="centerY" id="MY1-vo-kY9"/>
+                                <constraint firstItem="VYX-QP-S1C" firstAttribute="leading" secondItem="Cv0-0n-UBN" secondAttribute="leading" constant="15" id="Yuh-Jb-JF1"/>
+                                <constraint firstItem="f7K-nw-JKK" firstAttribute="leading" secondItem="Cv0-0n-UBN" secondAttribute="leading" constant="15" id="gqg-yu-Iad"/>
+                                <constraint firstAttribute="bottom" secondItem="f7K-nw-JKK" secondAttribute="bottom" id="wLH-xS-oGh"/>
+                                <constraint firstItem="VYX-QP-S1C" firstAttribute="top" secondItem="Cv0-0n-UBN" secondAttribute="top" id="wjJ-m3-Qdb"/>
+                            </constraints>
+                        </view>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eSw-Pl-GuT">
+                            <rect key="frame" x="0.0" y="0.0" width="169" height="67"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <connections>
+                                <action selector="showCourseTable:" destination="iN0-l3-epB" eventType="touchUpInside" id="CbE-Il-2iH"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="eSw-Pl-GuT" firstAttribute="leading" secondItem="7OX-Hg-VGQ" secondAttribute="leading" id="1ms-QK-ivl"/>
+                        <constraint firstAttribute="bottom" secondItem="xl6-ZM-TM5" secondAttribute="bottom" id="E0V-gU-IVN"/>
+                        <constraint firstItem="xl6-ZM-TM5" firstAttribute="leading" secondItem="7OX-Hg-VGQ" secondAttribute="leading" id="EhF-sx-7ib"/>
+                        <constraint firstItem="Cv0-0n-UBN" firstAttribute="centerY" secondItem="7OX-Hg-VGQ" secondAttribute="centerY" id="LAu-mH-Mlu"/>
+                        <constraint firstAttribute="trailing" secondItem="eSw-Pl-GuT" secondAttribute="trailing" id="NCW-Tl-qhm"/>
+                        <constraint firstItem="xl6-ZM-TM5" firstAttribute="top" secondItem="7OX-Hg-VGQ" secondAttribute="top" id="Q4G-dm-cct"/>
+                        <constraint firstAttribute="trailing" secondItem="xl6-ZM-TM5" secondAttribute="trailing" id="Rhn-B9-vy7"/>
+                        <constraint firstItem="Cv0-0n-UBN" firstAttribute="leading" secondItem="7OX-Hg-VGQ" secondAttribute="leading" id="gSC-Ow-VEo"/>
+                        <constraint firstAttribute="bottom" secondItem="eSw-Pl-GuT" secondAttribute="bottom" id="noX-TN-nX7"/>
+                        <constraint firstItem="eSw-Pl-GuT" firstAttribute="top" secondItem="7OX-Hg-VGQ" secondAttribute="top" id="qVL-og-TOC"/>
+                        <constraint firstAttribute="trailing" secondItem="Cv0-0n-UBN" secondAttribute="trailing" id="w8S-D6-eNM"/>
+                    </constraints>
+                </view>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="7OX-Hg-VGQ" firstAttribute="top" secondItem="dpf-2v-Tdc" secondAttribute="top" id="AV2-fY-htN"/>
+                <constraint firstItem="7OX-Hg-VGQ" firstAttribute="leading" secondItem="dpf-2v-Tdc" secondAttribute="trailing" constant="9" id="KUd-JQ-oMu"/>
+                <constraint firstAttribute="trailing" secondItem="7OX-Hg-VGQ" secondAttribute="trailing" constant="14" id="RoL-ER-nwI"/>
+                <constraint firstItem="dpf-2v-Tdc" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="jso-xX-axd"/>
+                <constraint firstItem="7OX-Hg-VGQ" firstAttribute="height" secondItem="dpf-2v-Tdc" secondAttribute="height" id="lhB-6z-J9Q"/>
+                <constraint firstItem="7OX-Hg-VGQ" firstAttribute="width" secondItem="dpf-2v-Tdc" secondAttribute="width" id="phh-6t-ppg"/>
+                <constraint firstAttribute="bottom" secondItem="dpf-2v-Tdc" secondAttribute="bottom" constant="12" id="tKz-G0-XBu"/>
+                <constraint firstItem="dpf-2v-Tdc" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="z9Z-ae-Axs"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="148.85496183206106" y="-7.394366197183099"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="home_course_bg" width="169" height="67"/>
+        <image name="home_course_detail" width="10" height="10"/>
+        <image name="home_train_bg" width="169" height="67"/>
+        <image name="home_train_detail" width="10" height="10"/>
+    </resources>
+</document>

+ 6 - 36
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotTalent/HomeHotTalentCell.m

@@ -29,7 +29,6 @@
 
 @property (nonatomic, strong) TalentTeacherModel *sourceModel;
 
-@property (weak, nonatomic) IBOutlet UIButton *followButton;
 
 @end
 
@@ -89,41 +88,12 @@
         self.teacherName.text = [NSString stringWithFormat:@"%@",sourceModel.username];
     }
     
-    if ([NSString isEmptyString:sourceModel.graduateSchool]) {
-        self.graduateSchool.text = @"认证老师";
-    }
-    else {
-        self.graduateSchool.text = [NSString returnNoNullStringWithString:sourceModel.graduateSchool];
-    }
-    
-    if (sourceModel.watch == 1) {
-        [self setButtonFollowed];
-        
-    }
-    else {
-        
-        self.followButton.userInteractionEnabled = YES;
-        self.followButton.backgroundColor = THEMECOLOR;
-        [self.followButton setTitle:@"关注" forState:UIControlStateNormal];
-        [self.followButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
-        self.followButton.layer.borderColor = THEMECOLOR.CGColor;
-    }
-}
-
-
-- (void)setButtonFollowed {
-    self.followButton.userInteractionEnabled = NO;
-    self.followButton.backgroundColor = [UIColor whiteColor];
-    [self.followButton setTitle:@"已关注" forState:UIControlStateNormal];
-    [self.followButton setTitleColor:HexRGB(0x999999) forState:UIControlStateNormal];
-    self.followButton.layer.borderColor = HexRGB(0xf0f0f0).CGColor;
-}
-
-- (IBAction)followAction:(id)sender {
-    [self setButtonFollowed];
-    if (self.callback) {
-        self.callback([NSString stringWithFormat:@"%.0f",self.sourceModel.userId]);
-    }
+//    if ([NSString isEmptyString:sourceModel.graduateSchool]) {
+//        self.graduateSchool.text = @"认证老师";
+//    }
+//    else {
+//        self.graduateSchool.text = [NSString returnNoNullStringWithString:sourceModel.graduateSchool];
+//    }
 }
 
 - (LOTAnimationView *)animationView {

+ 29 - 59
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotTalent/HomeHotTalentCell.xib

@@ -1,10 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
-        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -12,53 +11,53 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="HomeHotTalentCell">
-            <rect key="frame" x="0.0" y="0.0" width="110" height="178"/>
+            <rect key="frame" x="0.0" y="0.0" width="104" height="146"/>
             <autoresizingMask key="autoresizingMask"/>
             <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
-                <rect key="frame" x="0.0" y="0.0" width="110" height="178"/>
+                <rect key="frame" x="0.0" y="0.0" width="104" height="146"/>
                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                 <subviews>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QRJ-mO-zJO">
-                        <rect key="frame" x="2" y="2" width="106" height="174"/>
+                        <rect key="frame" x="0.0" y="0.0" width="104" height="146"/>
                         <subviews>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="teacher_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="AqF-It-spJ">
-                                <rect key="frame" x="24" y="17" width="58" height="58"/>
+                                <rect key="frame" x="21" y="15" width="62" height="62"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="58" id="Qhl-va-n5l"/>
-                                    <constraint firstAttribute="width" constant="58" id="fe8-Ou-Cwa"/>
+                                    <constraint firstAttribute="height" constant="62" id="Qhl-va-n5l"/>
+                                    <constraint firstAttribute="width" constant="62" id="fe8-Ou-Cwa"/>
                                 </constraints>
                                 <userDefinedRuntimeAttributes>
                                     <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
                                         <real key="value" value="2"/>
                                     </userDefinedRuntimeAttribute>
                                     <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                        <real key="value" value="29"/>
+                                        <real key="value" value="31"/>
                                     </userDefinedRuntimeAttribute>
                                     <userDefinedRuntimeAttribute type="color" keyPath="borderColor">
                                         <color key="value" red="0.70588235294117641" green="1" blue="0.95294117647058818" alpha="1" colorSpace="calibratedRGB"/>
                                     </userDefinedRuntimeAttribute>
                                 </userDefinedRuntimeAttributes>
                             </imageView>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PcD-yn-vxS">
-                                <rect key="frame" x="12" y="91" width="82" height="20"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="可爱的小星星" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PcD-yn-vxS">
+                                <rect key="frame" x="5" y="91" width="94" height="20"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="20" id="vjY-V4-Dql"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
-                                <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
+                                <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="认证老师" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="S4c-t1-3Yg">
-                                <rect key="frame" x="12" y="115" width="82" height="17"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="267人已关注" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="S4c-t1-3Yg">
+                                <rect key="frame" x="5" y="115" width="94" height="17"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="17" id="L6R-xr-JHX"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0eq-MB-HnX">
-                                <rect key="frame" x="34.5" y="66" width="37" height="18"/>
+                                <rect key="frame" x="33.5" y="66" width="37" height="18"/>
                                 <subviews>
                                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CQV-RL-RU6">
                                         <rect key="frame" x="2" y="2" width="33" height="14"/>
@@ -98,55 +97,28 @@
                                 </userDefinedRuntimeAttributes>
                             </view>
                             <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Dhx-ki-5CL">
-                                <rect key="frame" x="84" y="9" width="14" height="14"/>
+                                <rect key="frame" x="82" y="9" width="14" height="14"/>
                                 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="14" id="5B7-fz-a6F"/>
                                     <constraint firstAttribute="height" constant="14" id="5K0-04-Rux"/>
                                 </constraints>
                             </view>
-                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5fX-oe-QBC">
-                                <rect key="frame" x="24" y="141" width="58" height="24"/>
-                                <color key="backgroundColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                <constraints>
-                                    <constraint firstAttribute="width" constant="58" id="fln-cg-DC9"/>
-                                    <constraint firstAttribute="height" constant="24" id="hAu-8P-aY5"/>
-                                </constraints>
-                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                                <state key="normal" title="关注"/>
-                                <userDefinedRuntimeAttributes>
-                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                        <real key="value" value="12"/>
-                                    </userDefinedRuntimeAttribute>
-                                    <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
-                                        <real key="value" value="1"/>
-                                    </userDefinedRuntimeAttribute>
-                                    <userDefinedRuntimeAttribute type="color" keyPath="borderColor">
-                                        <color key="value" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
-                                    </userDefinedRuntimeAttribute>
-                                </userDefinedRuntimeAttributes>
-                                <connections>
-                                    <action selector="followAction:" destination="gTV-IL-0wX" eventType="touchUpInside" id="92T-as-pTh"/>
-                                </connections>
-                            </button>
                         </subviews>
-                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                         <constraints>
                             <constraint firstItem="0eq-MB-HnX" firstAttribute="centerX" secondItem="AqF-It-spJ" secondAttribute="centerX" id="4ha-lM-xOP"/>
-                            <constraint firstItem="0eq-MB-HnX" firstAttribute="centerY" secondItem="AqF-It-spJ" secondAttribute="bottom" id="4hu-TR-QAu"/>
-                            <constraint firstItem="AqF-It-spJ" firstAttribute="top" secondItem="QRJ-mO-zJO" secondAttribute="top" constant="17" id="8eB-CE-wKm"/>
+                            <constraint firstItem="0eq-MB-HnX" firstAttribute="centerY" secondItem="AqF-It-spJ" secondAttribute="bottom" constant="-2" id="4hu-TR-QAu"/>
+                            <constraint firstItem="AqF-It-spJ" firstAttribute="top" secondItem="QRJ-mO-zJO" secondAttribute="top" constant="15" id="8eB-CE-wKm"/>
                             <constraint firstItem="S4c-t1-3Yg" firstAttribute="top" secondItem="PcD-yn-vxS" secondAttribute="bottom" constant="4" id="F0j-4p-Fhl"/>
                             <constraint firstItem="PcD-yn-vxS" firstAttribute="top" secondItem="0eq-MB-HnX" secondAttribute="bottom" constant="7" id="L3T-P9-iJy"/>
-                            <constraint firstAttribute="trailing" secondItem="PcD-yn-vxS" secondAttribute="trailing" constant="12" id="N7b-Za-5rX"/>
+                            <constraint firstAttribute="trailing" secondItem="PcD-yn-vxS" secondAttribute="trailing" constant="5" id="N7b-Za-5rX"/>
                             <constraint firstAttribute="trailing" secondItem="Dhx-ki-5CL" secondAttribute="trailing" constant="8" id="PxQ-Bl-WvW"/>
-                            <constraint firstItem="S4c-t1-3Yg" firstAttribute="leading" secondItem="QRJ-mO-zJO" secondAttribute="leading" constant="12" id="Rii-NH-CrS"/>
+                            <constraint firstItem="S4c-t1-3Yg" firstAttribute="leading" secondItem="QRJ-mO-zJO" secondAttribute="leading" constant="5" id="Rii-NH-CrS"/>
                             <constraint firstItem="Dhx-ki-5CL" firstAttribute="top" secondItem="QRJ-mO-zJO" secondAttribute="top" constant="9" id="S3r-5n-u2l"/>
-                            <constraint firstItem="PcD-yn-vxS" firstAttribute="leading" secondItem="QRJ-mO-zJO" secondAttribute="leading" constant="12" id="fs8-JQ-NPs"/>
-                            <constraint firstAttribute="trailing" secondItem="S4c-t1-3Yg" secondAttribute="trailing" constant="12" id="fyR-jX-nrb"/>
+                            <constraint firstItem="PcD-yn-vxS" firstAttribute="leading" secondItem="QRJ-mO-zJO" secondAttribute="leading" constant="5" id="fs8-JQ-NPs"/>
+                            <constraint firstAttribute="trailing" secondItem="S4c-t1-3Yg" secondAttribute="trailing" constant="5" id="fyR-jX-nrb"/>
                             <constraint firstItem="AqF-It-spJ" firstAttribute="centerX" secondItem="QRJ-mO-zJO" secondAttribute="centerX" id="ghn-5q-7fh"/>
-                            <constraint firstItem="5fX-oe-QBC" firstAttribute="top" secondItem="S4c-t1-3Yg" secondAttribute="bottom" constant="9" id="ngX-6L-O0Z"/>
-                            <constraint firstItem="5fX-oe-QBC" firstAttribute="centerX" secondItem="QRJ-mO-zJO" secondAttribute="centerX" id="p4y-zw-M7q"/>
                         </constraints>
                         <userDefinedRuntimeAttributes>
                             <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -157,17 +129,15 @@
                     </view>
                 </subviews>
             </view>
-            <viewLayoutGuide key="safeArea" id="SEy-5g-ep8"/>
             <constraints>
-                <constraint firstAttribute="trailing" secondItem="QRJ-mO-zJO" secondAttribute="trailing" constant="2" id="GGJ-tl-sHz"/>
-                <constraint firstAttribute="bottom" secondItem="QRJ-mO-zJO" secondAttribute="bottom" constant="2" id="Rkg-Is-p4l"/>
-                <constraint firstItem="QRJ-mO-zJO" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="2" id="Tav-DU-CyB"/>
-                <constraint firstItem="QRJ-mO-zJO" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="2" id="sMw-Nf-Q0v"/>
+                <constraint firstAttribute="trailing" secondItem="QRJ-mO-zJO" secondAttribute="trailing" id="GGJ-tl-sHz"/>
+                <constraint firstAttribute="bottom" secondItem="QRJ-mO-zJO" secondAttribute="bottom" id="Rkg-Is-p4l"/>
+                <constraint firstItem="QRJ-mO-zJO" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="Tav-DU-CyB"/>
+                <constraint firstItem="QRJ-mO-zJO" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="sMw-Nf-Q0v"/>
             </constraints>
-            <size key="customSize" width="168" height="183"/>
+            <size key="customSize" width="168" height="159"/>
             <connections>
                 <outlet property="animationBgView" destination="Dhx-ki-5CL" id="iPZ-w4-Zrw"/>
-                <outlet property="followButton" destination="5fX-oe-QBC" id="VKh-Ke-r8o"/>
                 <outlet property="graduateSchool" destination="S4c-t1-3Yg" id="wYB-Bo-d7v"/>
                 <outlet property="liveColorView" destination="CQV-RL-RU6" id="SUB-wz-3UT"/>
                 <outlet property="liveView" destination="0eq-MB-HnX" id="G0f-AD-yCi"/>
@@ -175,7 +145,7 @@
                 <outlet property="teacherName" destination="PcD-yn-vxS" id="nnY-pL-e95"/>
                 <outlet property="tipsLabel" destination="r9C-td-aZd" id="RUZ-dR-920"/>
             </connections>
-            <point key="canvasLocation" x="169.56521739130437" y="113.83928571428571"/>
+            <point key="canvasLocation" x="169.56521739130437" y="105.80357142857143"/>
         </collectionViewCell>
     </objects>
     <resources>

+ 2 - 1
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotTalent/HomeHotTalentView.m

@@ -14,6 +14,7 @@
 @end
 
 @implementation HomeHotTalentView
+
 + (instancetype)shareInstance {
     HomeHotTalentView *view = [[[NSBundle mainBundle] loadNibNamed:@"HomeHotTalentView" owner:nil options:nil] firstObject];
     return view;
@@ -31,7 +32,7 @@
 }
 
 + (CGFloat)getViewHeight {
-    return 244;
+    return 202;
 }
 /*
 // Only override drawRect: if you perform custom drawing.

+ 16 - 16
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotTalent/HomeHotTalentView.xib

@@ -10,34 +10,34 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="HomeHotTalentView">
-            <rect key="frame" x="0.0" y="0.0" width="623" height="244"/>
+            <rect key="frame" x="0.0" y="0.0" width="623" height="202"/>
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
-                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="推荐老师" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ocF-cI-geX">
-                    <rect key="frame" x="24" y="30" width="71.5" height="22"/>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="老师" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ocF-cI-geX">
+                    <rect key="frame" x="24" y="20" width="51" height="24"/>
                     <constraints>
-                        <constraint firstAttribute="height" constant="22" id="cce-8F-ZTG"/>
+                        <constraint firstAttribute="height" constant="24" id="cce-8F-ZTG"/>
                     </constraints>
-                    <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/>
-                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                    <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="17"/>
+                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                     <nil key="highlightedColor"/>
                 </label>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TvN-a5-fF0">
-                    <rect key="frame" x="0.0" y="66" width="623" height="178"/>
+                    <rect key="frame" x="0.0" y="56" width="623" height="146"/>
                     <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     <constraints>
-                        <constraint firstAttribute="height" constant="178" id="Iwn-9Q-bda"/>
+                        <constraint firstAttribute="height" constant="146" id="Iwn-9Q-bda"/>
                     </constraints>
                 </view>
                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_left" translatesAutoresizingMaskIntoConstraints="NO" id="yk3-O1-fKs">
-                    <rect key="frame" x="14" y="32" width="4" height="18"/>
+                    <rect key="frame" x="14" y="23" width="4" height="18"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="18" id="5GX-jt-Phz"/>
                         <constraint firstAttribute="width" constant="4" id="vXT-S1-5L3"/>
                     </constraints>
                 </imageView>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rZg-YL-a5F">
-                    <rect key="frame" x="565" y="32" width="44" height="18"/>
+                    <rect key="frame" x="565" y="23" width="44" height="18"/>
                     <color key="backgroundColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="0.10000000000000001" colorSpace="calibratedRGB"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="18" id="OkI-Tj-OYy"/>
@@ -49,20 +49,20 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="更多" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nhJ-zw-nWQ">
-                    <rect key="frame" x="571" y="33.5" width="24" height="15"/>
+                    <rect key="frame" x="571" y="24.5" width="24" height="15"/>
                     <fontDescription key="fontDescription" type="system" pointSize="12"/>
                     <color key="textColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
                     <nil key="highlightedColor"/>
                 </label>
                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_more_green" translatesAutoresizingMaskIntoConstraints="NO" id="e4W-Jc-T1U">
-                    <rect key="frame" x="598" y="37" width="6" height="8"/>
+                    <rect key="frame" x="598" y="28" width="6" height="8"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="8" id="9gb-VU-p9w"/>
                         <constraint firstAttribute="width" constant="6" id="prd-cf-z4Y"/>
                     </constraints>
                 </imageView>
                 <button opaque="NO" tag="1008" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="J76-uF-Ucm">
-                    <rect key="frame" x="571" y="26" width="33" height="30"/>
+                    <rect key="frame" x="571" y="17" width="33" height="30"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="30" id="O0L-Nf-Gcm"/>
                     </constraints>
@@ -88,9 +88,9 @@
                 <constraint firstItem="e4W-Jc-T1U" firstAttribute="trailing" secondItem="rZg-YL-a5F" secondAttribute="trailing" constant="-5" id="VTq-fy-AMd"/>
                 <constraint firstItem="TvN-a5-fF0" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="c8p-em-0SR"/>
                 <constraint firstItem="ocF-cI-geX" firstAttribute="centerY" secondItem="yk3-O1-fKs" secondAttribute="centerY" id="d7f-tY-UGC"/>
-                <constraint firstItem="ocF-cI-geX" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="30" id="ddX-0C-PSD"/>
+                <constraint firstItem="ocF-cI-geX" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="20" id="ddX-0C-PSD"/>
                 <constraint firstAttribute="trailing" secondItem="TvN-a5-fF0" secondAttribute="trailing" id="iPn-Om-Feh"/>
-                <constraint firstItem="TvN-a5-fF0" firstAttribute="top" secondItem="ocF-cI-geX" secondAttribute="bottom" constant="14" id="qVZ-Bi-MOx"/>
+                <constraint firstItem="TvN-a5-fF0" firstAttribute="top" secondItem="ocF-cI-geX" secondAttribute="bottom" constant="12" id="qVZ-Bi-MOx"/>
                 <constraint firstItem="yk3-O1-fKs" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="r3r-b1-RY9"/>
                 <constraint firstItem="ocF-cI-geX" firstAttribute="leading" secondItem="yk3-O1-fKs" secondAttribute="trailing" constant="6" id="s7t-ve-29J"/>
                 <constraint firstItem="e4W-Jc-T1U" firstAttribute="leading" secondItem="nhJ-zw-nWQ" secondAttribute="trailing" constant="3" id="ukh-iq-egl"/>
@@ -101,7 +101,7 @@
             <connections>
                 <outlet property="talentContentView" destination="TvN-a5-fF0" id="yD2-CZ-Qhm"/>
             </connections>
-            <point key="canvasLocation" x="63.04347826086957" y="-49.553571428571423"/>
+            <point key="canvasLocation" x="63.04347826086957" y="-60.9375"/>
         </view>
     </objects>
     <resources>

+ 67 - 65
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotVideoCourse/HomeHotVideoCell.xib

@@ -1,10 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
-        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -12,40 +11,38 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="HomeHotVideoCell">
-            <rect key="frame" x="0.0" y="0.0" width="168" height="153"/>
+            <rect key="frame" x="0.0" y="0.0" width="168" height="158"/>
             <autoresizingMask key="autoresizingMask"/>
             <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
-                <rect key="frame" x="0.0" y="0.0" width="168" height="153"/>
+                <rect key="frame" x="0.0" y="0.0" width="168" height="158"/>
                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                 <subviews>
                     <view contentMode="scaleAspectFit" translatesAutoresizingMaskIntoConstraints="NO" id="Z9Y-DS-o2S">
-                        <rect key="frame" x="2" y="2" width="164" height="149"/>
+                        <rect key="frame" x="0.0" y="0.0" width="168" height="158"/>
                         <subviews>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="wTC-8E-ugs">
-                                <rect key="frame" x="0.0" y="0.0" width="164" height="95"/>
+                                <rect key="frame" x="0.0" y="0.0" width="168" height="93"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="95" id="1MD-pj-b6f"/>
+                                    <constraint firstAttribute="height" constant="93" id="1MD-pj-b6f"/>
                                 </constraints>
                             </imageView>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iEG-bR-UaR">
-                                <rect key="frame" x="6" y="6" width="10" height="13"/>
+                                <rect key="frame" x="6" y="6" width="28" height="14"/>
                                 <subviews>
-                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="t7Q-dI-DuS">
-                                        <rect key="frame" x="5" y="0.0" width="0.0" height="13"/>
-                                        <constraints>
-                                            <constraint firstAttribute="height" constant="13" id="X64-z5-Rol"/>
-                                        </constraints>
-                                        <fontDescription key="fontDescription" type="system" pointSize="9"/>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="长笛" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="t7Q-dI-DuS">
+                                        <rect key="frame" x="4" y="0.0" width="20" height="14"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                         <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                         <nil key="highlightedColor"/>
                                     </label>
                                 </subviews>
-                                <color key="backgroundColor" red="0.37647058823529411" green="0.37647058823529411" blue="0.37647058823529411" alpha="0.59999999999999998" colorSpace="calibratedRGB"/>
+                                <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="bottom" secondItem="t7Q-dI-DuS" secondAttribute="bottom" id="To8-wX-JuA"/>
+                                    <constraint firstAttribute="height" constant="14" id="YU1-55-lOr"/>
                                     <constraint firstItem="t7Q-dI-DuS" firstAttribute="top" secondItem="iEG-bR-UaR" secondAttribute="top" id="bTC-uv-MHS"/>
-                                    <constraint firstItem="t7Q-dI-DuS" firstAttribute="leading" secondItem="iEG-bR-UaR" secondAttribute="leading" constant="5" id="mSr-sM-8gc"/>
-                                    <constraint firstAttribute="trailing" secondItem="t7Q-dI-DuS" secondAttribute="trailing" constant="5" id="whh-ZK-qOD"/>
+                                    <constraint firstItem="t7Q-dI-DuS" firstAttribute="leading" secondItem="iEG-bR-UaR" secondAttribute="leading" constant="4" id="mSr-sM-8gc"/>
+                                    <constraint firstAttribute="trailing" secondItem="t7Q-dI-DuS" secondAttribute="trailing" constant="4" id="whh-ZK-qOD"/>
                                 </constraints>
                                 <userDefinedRuntimeAttributes>
                                     <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -53,27 +50,40 @@
                                     </userDefinedRuntimeAttribute>
                                 </userDefinedRuntimeAttributes>
                             </view>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4KZ-pa-CpR">
-                                <rect key="frame" x="11" y="102" width="142" height="20"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="热门歌曲…" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4KZ-pa-CpR">
+                                <rect key="frame" x="12" y="99" width="144" height="21"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="20" id="lao-V8-wfX"/>
+                                    <constraint firstAttribute="height" constant="21" id="lao-V8-wfX"/>
                                 </constraints>
-                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
-                                <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
+                                <color key="textColor" red="0.074509803921568626" green="0.078431372549019607" blue="0.082352941176470587" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="749" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Ny-Ee-haR">
-                                <rect key="frame" x="11" y="128" width="0.0" height="0.0"/>
+                                <rect key="frame" x="36" y="127" width="0.0" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="18" id="9hf-10-cyt"/>
+                                </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                 <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NHm-Ob-jBe">
-                                <rect key="frame" x="144" y="126" width="4" height="4"/>
-                                <color key="backgroundColor" red="1" green="0.53725490196078429" blue="0.0039215686274509803" alpha="1" colorSpace="calibratedRGB"/>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UwQ-iN-CHQ">
+                                <rect key="frame" x="101.5" y="126.5" width="54.5" height="19"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12人学习" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kAl-tc-ntC">
+                                        <rect key="frame" x="2" y="2.5" width="50.5" height="14.5"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                        <color key="textColor" red="1" green="0.40784313725490196" blue="0.15294117647058825" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" red="1" green="0.50196078431372548" blue="0.17254901960784313" alpha="0.070000000000000007" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="4" id="ZB8-4x-8jr"/>
-                                    <constraint firstAttribute="width" constant="4" id="gt1-F9-L6E"/>
+                                    <constraint firstItem="kAl-tc-ntC" firstAttribute="centerY" secondItem="UwQ-iN-CHQ" secondAttribute="centerY" id="UlY-8z-c9f"/>
+                                    <constraint firstItem="kAl-tc-ntC" firstAttribute="leading" secondItem="UwQ-iN-CHQ" secondAttribute="leading" constant="2" id="XbR-Bk-nwH"/>
+                                    <constraint firstAttribute="height" constant="19" id="aVy-LG-dXa"/>
+                                    <constraint firstAttribute="trailing" secondItem="kAl-tc-ntC" secondAttribute="trailing" constant="2" id="kQH-FX-Ek1"/>
                                 </constraints>
                                 <userDefinedRuntimeAttributes>
                                     <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -81,58 +91,50 @@
                                     </userDefinedRuntimeAttribute>
                                 </userDefinedRuntimeAttributes>
                             </view>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kAl-tc-ntC">
-                                <rect key="frame" x="152" y="128" width="0.0" height="0.0"/>
-                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                <color key="textColor" red="1" green="0.53725490200000003" blue="0.0039215686269999999" alpha="1" colorSpace="calibratedRGB"/>
-                                <nil key="highlightedColor"/>
-                            </label>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="beY-9e-YS4">
+                                <rect key="frame" x="12" y="126" width="20" height="20"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="20" id="XDf-1n-aB1"/>
+                                    <constraint firstAttribute="width" constant="20" id="s4R-QM-XyC"/>
+                                </constraints>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                        <real key="value" value="10"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                            </imageView>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
-                            <constraint firstItem="NHm-Ob-jBe" firstAttribute="centerY" secondItem="4Ny-Ee-haR" secondAttribute="centerY" id="0kg-0F-TKg"/>
                             <constraint firstAttribute="trailing" secondItem="wTC-8E-ugs" secondAttribute="trailing" id="3D0-1L-YuS"/>
-                            <constraint firstItem="4Ny-Ee-haR" firstAttribute="leading" secondItem="4KZ-pa-CpR" secondAttribute="leading" id="4iA-XR-otT"/>
-                            <constraint firstItem="NHm-Ob-jBe" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="4Ny-Ee-haR" secondAttribute="trailing" constant="4" id="7Ia-I7-SEf"/>
-                            <constraint firstItem="4Ny-Ee-haR" firstAttribute="top" secondItem="4KZ-pa-CpR" secondAttribute="bottom" constant="6" id="7zK-KZ-Yb8"/>
-                            <constraint firstItem="4KZ-pa-CpR" firstAttribute="leading" secondItem="Z9Y-DS-o2S" secondAttribute="leading" constant="11" id="ARz-lR-bqo"/>
+                            <constraint firstItem="4Ny-Ee-haR" firstAttribute="centerY" secondItem="beY-9e-YS4" secondAttribute="centerY" id="5N8-LS-RoX"/>
+                            <constraint firstItem="4KZ-pa-CpR" firstAttribute="leading" secondItem="Z9Y-DS-o2S" secondAttribute="leading" constant="12" id="ARz-lR-bqo"/>
+                            <constraint firstItem="4Ny-Ee-haR" firstAttribute="leading" secondItem="beY-9e-YS4" secondAttribute="trailing" constant="4" id="AeB-3j-gFI"/>
                             <constraint firstItem="wTC-8E-ugs" firstAttribute="leading" secondItem="Z9Y-DS-o2S" secondAttribute="leading" id="Cz7-tf-l2g"/>
                             <constraint firstItem="iEG-bR-UaR" firstAttribute="top" secondItem="Z9Y-DS-o2S" secondAttribute="top" constant="6" id="ESb-5A-bp8"/>
-                            <constraint firstItem="kAl-tc-ntC" firstAttribute="centerY" secondItem="NHm-Ob-jBe" secondAttribute="centerY" id="F1J-2K-d2x"/>
                             <constraint firstItem="wTC-8E-ugs" firstAttribute="top" secondItem="Z9Y-DS-o2S" secondAttribute="top" id="HLD-wW-9Jh"/>
-                            <constraint firstItem="kAl-tc-ntC" firstAttribute="leading" secondItem="NHm-Ob-jBe" secondAttribute="trailing" constant="4" id="IJL-s1-EkX"/>
+                            <constraint firstAttribute="trailing" secondItem="UwQ-iN-CHQ" secondAttribute="trailing" constant="12" id="Soz-FZ-FGc"/>
                             <constraint firstItem="iEG-bR-UaR" firstAttribute="leading" secondItem="Z9Y-DS-o2S" secondAttribute="leading" constant="6" id="T2f-qa-HN9"/>
-                            <constraint firstAttribute="trailing" secondItem="kAl-tc-ntC" secondAttribute="trailing" constant="12" id="dYW-Ui-C47"/>
-                            <constraint firstItem="4KZ-pa-CpR" firstAttribute="top" secondItem="wTC-8E-ugs" secondAttribute="bottom" constant="7" id="n8d-1d-I45"/>
-                            <constraint firstAttribute="trailing" secondItem="4KZ-pa-CpR" secondAttribute="trailing" constant="11" id="xmO-bF-zUB"/>
+                            <constraint firstItem="4Ny-Ee-haR" firstAttribute="centerY" secondItem="UwQ-iN-CHQ" secondAttribute="centerY" id="Thf-Qt-6KH"/>
+                            <constraint firstItem="beY-9e-YS4" firstAttribute="top" secondItem="4KZ-pa-CpR" secondAttribute="bottom" constant="6" id="cNg-21-Uzv"/>
+                            <constraint firstItem="beY-9e-YS4" firstAttribute="leading" secondItem="Z9Y-DS-o2S" secondAttribute="leading" constant="12" id="kYD-cs-CXc"/>
+                            <constraint firstItem="4KZ-pa-CpR" firstAttribute="top" secondItem="wTC-8E-ugs" secondAttribute="bottom" constant="6" id="n8d-1d-I45"/>
+                            <constraint firstItem="UwQ-iN-CHQ" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="4Ny-Ee-haR" secondAttribute="trailing" constant="5" id="s36-Nv-HfG"/>
+                            <constraint firstAttribute="trailing" secondItem="4KZ-pa-CpR" secondAttribute="trailing" constant="12" id="xmO-bF-zUB"/>
                         </constraints>
                         <userDefinedRuntimeAttributes>
-                            <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
-                                <real key="value" value="10"/>
-                            </userDefinedRuntimeAttribute>
-                            <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
-                                <real key="value" value="1"/>
-                            </userDefinedRuntimeAttribute>
-                            <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
-                                <size key="value" width="0.0" height="2"/>
-                            </userDefinedRuntimeAttribute>
-                            <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
-                                <color key="value" red="0.89803921568627454" green="0.89803921568627454" blue="0.89803921568627454" alpha="0.10000000000000001" colorSpace="custom" customColorSpace="calibratedRGB"/>
-                            </userDefinedRuntimeAttribute>
-                            <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="YES"/>
                             <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                <real key="value" value="10"/>
+                                <real key="value" value="6"/>
                             </userDefinedRuntimeAttribute>
                         </userDefinedRuntimeAttributes>
                     </view>
                 </subviews>
             </view>
-            <viewLayoutGuide key="safeArea" id="SEy-5g-ep8"/>
             <constraints>
-                <constraint firstAttribute="bottom" secondItem="Z9Y-DS-o2S" secondAttribute="bottom" constant="2" id="6bd-bt-lLy"/>
-                <constraint firstItem="Z9Y-DS-o2S" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="2" id="8EY-rY-zVf"/>
-                <constraint firstItem="Z9Y-DS-o2S" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="2" id="D5y-CV-jga"/>
-                <constraint firstAttribute="trailing" secondItem="Z9Y-DS-o2S" secondAttribute="trailing" constant="2" id="ZB7-Gj-aCl"/>
+                <constraint firstAttribute="bottom" secondItem="Z9Y-DS-o2S" secondAttribute="bottom" id="6bd-bt-lLy"/>
+                <constraint firstItem="Z9Y-DS-o2S" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="8EY-rY-zVf"/>
+                <constraint firstItem="Z9Y-DS-o2S" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="D5y-CV-jga"/>
+                <constraint firstAttribute="trailing" secondItem="Z9Y-DS-o2S" secondAttribute="trailing" id="ZB7-Gj-aCl"/>
             </constraints>
             <size key="customSize" width="294" height="193"/>
             <connections>
@@ -142,7 +144,7 @@
                 <outlet property="subjectLabel" destination="t7Q-dI-DuS" id="g1q-ZG-oNa"/>
                 <outlet property="teacherName" destination="4Ny-Ee-haR" id="KeA-wn-Vzl"/>
             </connections>
-            <point key="canvasLocation" x="121.73913043478262" y="127.56696428571428"/>
+            <point key="canvasLocation" x="121.73913043478262" y="127.23214285714285"/>
         </collectionViewCell>
     </objects>
     <resources>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotVideoCourse/HomeHotVideoCourseView.m

@@ -27,7 +27,7 @@
 }
 
 + (CGFloat)getViewHeight {
-    return 224.0f;
+    return 214.0f;
 }
 - (IBAction)moreVideoCourse:(id)sender {
     if (self.callback) {

+ 13 - 13
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotVideoCourse/HomeHotVideoCourseView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21225" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21207"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -14,7 +14,7 @@
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ImZ-xL-12C">
-                    <rect key="frame" x="355" y="33.5" width="45" height="18"/>
+                    <rect key="frame" x="356" y="23.5" width="44" height="18"/>
                     <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="0.10000000000000001" colorSpace="calibratedRGB"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="18" id="AcK-bR-c3f"/>
@@ -25,37 +25,37 @@
                         </userDefinedRuntimeAttribute>
                     </userDefinedRuntimeAttributes>
                 </view>
-                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="精品视频课" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EIe-qp-TsO">
-                    <rect key="frame" x="24" y="30" width="92" height="25"/>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="视频课" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EIe-qp-TsO">
+                    <rect key="frame" x="24" y="20" width="51" height="25"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="25" id="uPk-du-hdF"/>
                     </constraints>
-                    <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/>
-                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                    <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="17"/>
+                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                     <nil key="highlightedColor"/>
                 </label>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kff-dl-GsO">
-                    <rect key="frame" x="0.0" y="67" width="414" height="157"/>
+                    <rect key="frame" x="0.0" y="57" width="414" height="157"/>
                     <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="157" id="drX-7K-Af3"/>
                     </constraints>
                 </view>
                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_more_green" translatesAutoresizingMaskIntoConstraints="NO" id="QNi-gh-Evy">
-                    <rect key="frame" x="389" y="38.5" width="6" height="8"/>
+                    <rect key="frame" x="389" y="28.5" width="6" height="8"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="8" id="GlH-pA-QXZ"/>
                         <constraint firstAttribute="width" constant="6" id="Ukq-f5-bGl"/>
                     </constraints>
                 </imageView>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="更多" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Nbu-3T-s6e">
-                    <rect key="frame" x="361" y="35.5" width="25" height="14.5"/>
+                    <rect key="frame" x="362" y="25.5" width="24" height="14.5"/>
                     <fontDescription key="fontDescription" type="system" pointSize="12"/>
                     <color key="textColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
                     <nil key="highlightedColor"/>
                 </label>
                 <button opaque="NO" tag="1008" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oQF-oZ-Pbs">
-                    <rect key="frame" x="361" y="27.5" width="34" height="30"/>
+                    <rect key="frame" x="362" y="17.5" width="33" height="30"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="30" id="EY9-fK-W16"/>
                     </constraints>
@@ -68,7 +68,7 @@
                     </connections>
                 </button>
                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_left" translatesAutoresizingMaskIntoConstraints="NO" id="tFO-hR-fSY">
-                    <rect key="frame" x="14" y="33.5" width="4" height="18"/>
+                    <rect key="frame" x="14" y="23.5" width="4" height="18"/>
                     <constraints>
                         <constraint firstAttribute="width" constant="4" id="F2X-9W-Jbc"/>
                         <constraint firstAttribute="height" constant="18" id="OWn-BU-LHJ"/>
@@ -84,7 +84,7 @@
                 <constraint firstItem="oQF-oZ-Pbs" firstAttribute="centerY" secondItem="EIe-qp-TsO" secondAttribute="centerY" id="DOP-FW-z0s"/>
                 <constraint firstItem="Nbu-3T-s6e" firstAttribute="centerY" secondItem="EIe-qp-TsO" secondAttribute="centerY" id="Dov-kK-syB"/>
                 <constraint firstItem="EIe-qp-TsO" firstAttribute="leading" secondItem="tFO-hR-fSY" secondAttribute="trailing" constant="6" id="ETt-w1-ZU5"/>
-                <constraint firstItem="EIe-qp-TsO" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="30" id="J92-sS-Hwf"/>
+                <constraint firstItem="EIe-qp-TsO" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="20" id="J92-sS-Hwf"/>
                 <constraint firstItem="EIe-qp-TsO" firstAttribute="centerY" secondItem="tFO-hR-fSY" secondAttribute="centerY" id="ZdY-76-AKV"/>
                 <constraint firstItem="QNi-gh-Evy" firstAttribute="trailing" secondItem="oQF-oZ-Pbs" secondAttribute="trailing" id="dYU-KQ-3GP"/>
                 <constraint firstItem="ImZ-xL-12C" firstAttribute="centerY" secondItem="EIe-qp-TsO" secondAttribute="centerY" id="k4f-yA-IaN"/>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Home/View/PublicNoticeView.m

@@ -34,7 +34,7 @@
 
 
 + (CGFloat)getViewHeight {
-    return 68.0f;
+    return 56.0f;
 }
 /*
 // Only override drawRect: if you perform custom drawing.

+ 16 - 6
KulexiuForStudent/KulexiuForStudent/Module/Home/View/PublicNoticeView.xib

@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="PublicNoticeView">
-            <rect key="frame" x="0.0" y="0.0" width="414" height="68"/>
+            <rect key="frame" x="0.0" y="0.0" width="414" height="56"/>
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="18s-Im-HaS">
-                    <rect key="frame" x="14" y="12" width="386" height="44"/>
+                    <rect key="frame" x="14" y="0.0" width="386" height="44"/>
                     <subviews>
                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="notice_icon" translatesAutoresizingMaskIntoConstraints="NO" id="Emb-yN-fCJ">
                             <rect key="frame" x="10" y="9" width="27" height="26"/>
@@ -35,7 +35,7 @@
                             </connections>
                         </button>
                     </subviews>
-                    <color key="backgroundColor" red="0.99607843137254903" green="0.97647058823529409" blue="0.95686274509803915" alpha="1" colorSpace="calibratedRGB"/>
+                    <color key="backgroundColor" red="0.99607843137254903" green="0.97647058823529409" blue="0.95686274509803915" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                     <constraints>
                         <constraint firstAttribute="bottom" secondItem="l4x-1S-fJR" secondAttribute="bottom" id="1Jd-Qb-ShD"/>
                         <constraint firstItem="Emb-yN-fCJ" firstAttribute="centerY" secondItem="18s-Im-HaS" secondAttribute="centerY" id="Cfw-Em-J6j"/>
@@ -52,14 +52,24 @@
                         <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                             <real key="value" value="10"/>
                         </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
+                            <size key="value" width="0.0" height="2"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
+                            <real key="value" value="1"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
                     </userDefinedRuntimeAttributes>
                 </view>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
                 <constraint firstAttribute="trailing" secondItem="18s-Im-HaS" secondAttribute="trailing" constant="14" id="2VW-dV-Qen"/>
+                <constraint firstItem="18s-Im-HaS" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="75w-gT-uDZ"/>
                 <constraint firstItem="18s-Im-HaS" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="KB3-aY-BCZ"/>
-                <constraint firstItem="18s-Im-HaS" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="ujd-aT-oAW"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>

+ 2 - 0
KulexiuForStudent/KulexiuForStudent/Module/Home/View/RecentCourse/HomeRecentCourseView.h

@@ -27,6 +27,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)joinRoom:(RecentCourseAction)callback;
 
++ (CGFloat)getViewHeight;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 19 - 31
KulexiuForStudent/KulexiuForStudent/Module/Home/View/RecentCourse/HomeRecentCourseView.m

@@ -6,13 +6,12 @@
 //
 
 #import "HomeRecentCourseView.h"
-#import <Lottie/Lottie.h>
 
 @interface HomeRecentCourseView ()
 
-@property (nonatomic, strong) LOTAnimationView *animationView;
+@property (weak, nonatomic) IBOutlet UIView *statusBgView;
 
-@property (weak, nonatomic) IBOutlet UIView *imageBgView;
+@property (weak, nonatomic) IBOutlet UILabel *statusLabel;
 
 @property (weak, nonatomic) IBOutlet UILabel *titleLabel;
 
@@ -54,37 +53,24 @@
         [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
         self.timeLabel.text = [NSString returnNoNullStringWithString:[formatter stringFromDate:beginDate]];
     }
-
-    NSString *jsonString = @"";
-    if ([self.courseModel.courseType isEqualToString:@"LIVE"]) {
-        jsonString = @"live_animation.json";
-    }
-    else if ([self.courseModel.courseType isEqualToString:@"PIANO_ROOM_CLASS"]) {
-        jsonString = @"musicRoom_animation.json";
+    
+    if ([model.status isEqualToString:@"ING"]) { // 进行中
+        self.statusBgView.layer.borderColor = [UIColor clearColor].CGColor;
+        self.statusBgView.backgroundColor = THEMECOLOR;
+        self.statusLabel.text = @"进入教室";
+        self.statusLabel.font = [UIFont systemFontOfSize:14.0f weight:UIFontWeightMedium];
+        self.statusLabel.textColor = [UIColor whiteColor];
     }
-    else if ([self.courseModel.courseType isEqualToString:@"VIP"]) {
-        jsonString = @"accomapny_animation.json";
+    else { // 未开始
+        self.statusBgView.backgroundColor = [UIColor whiteColor];
+        self.statusBgView.layer.borderColor = HexRGBAlpha(0x2DC7AA, 0.5f).CGColor;
+        self.statusLabel.text = @"即将开始";
+        self.statusLabel.font = [UIFont systemFontOfSize:14.0f];
+        self.statusLabel.textColor = THEMECOLOR;
     }
-    else {
-        jsonString = @"accomapny_animation.json";
-    }
-    [self configAnimationView:jsonString];
 }
 
-- (void)configAnimationView:(NSString *)jsonString {
-    if ([self.imageBgView.subviews containsObject:self.animationView]) {
-        [self.animationView removeFromSuperview];
-    }
-    self.animationView = [LOTAnimationView animationWithFilePath:[[NSBundle mainBundle] pathForResource:jsonString ofType:@"json"]];
-    //2.加载后台给的json(url)
-    self.animationView.frame = CGRectMake(0, 0, 128, 91);
-    self.animationView.loopAnimation = YES;
-    self.animationView.contentMode = UIViewContentModeScaleAspectFill;
-    self.animationView.animationSpeed = 1.0;
-    self.animationView.loopAnimation = YES;
-    [self.imageBgView addSubview:self.animationView];
-    [self.animationView play];
-}
+
 
 - (IBAction)joinRoomAction:(id)sender {
     if (self.callback) {
@@ -105,7 +91,9 @@
     }
 }
 
-
++ (CGFloat)getViewHeight {
+    return 82.0f;
+}
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 58 - 51
KulexiuForStudent/KulexiuForStudent/Module/Home/View/RecentCourse/HomeRecentCourseView.xib

@@ -1,110 +1,115 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="HomeRecentCourseView">
-            <rect key="frame" x="0.0" y="0.0" width="414" height="90"/>
+            <rect key="frame" x="0.0" y="0.0" width="414" height="82"/>
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Jzj-07-uBu">
-                    <rect key="frame" x="14" y="20" width="386" height="70"/>
+                    <rect key="frame" x="14" y="0.0" width="386" height="70"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="您有新课程即将开始" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lrj-nH-46q">
-                            <rect key="frame" x="128" y="12" width="147" height="28"/>
+                            <rect key="frame" x="16" y="10" width="268" height="28"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="28" id="sH9-HN-Ism"/>
                             </constraints>
                             <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
-                            <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="calibratedRGB"/>
+                            <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_tips" translatesAutoresizingMaskIntoConstraints="NO" id="pUs-nj-cKV">
-                            <rect key="frame" x="128" y="42" width="15" height="14"/>
+                            <rect key="frame" x="16" y="40" width="15" height="14"/>
                         </imageView>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ebm-D0-ZwZ">
-                            <rect key="frame" x="148" y="49" width="0.0" height="0.0"/>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="今日 15:00-15:45" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ebm-D0-ZwZ">
+                            <rect key="frame" x="39" y="38" width="103.5" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="18" id="xG3-5S-XL0"/>
+                            </constraints>
                             <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                            <color key="textColor" red="1" green="0.50196078431372548" blue="0.43529411764705883" alpha="1" colorSpace="calibratedRGB"/>
+                            <color key="textColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_courseNext" translatesAutoresizingMaskIntoConstraints="NO" id="I3Y-BW-zVy">
-                            <rect key="frame" x="357" y="26" width="18" height="18"/>
-                        </imageView>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nFt-Tj-nsV">
+                            <rect key="frame" x="294" y="22" width="76" height="26"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="即将开始" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FPN-v9-q51">
+                                    <rect key="frame" x="10" y="4.5" width="56" height="17"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                            <constraints>
+                                <constraint firstItem="FPN-v9-q51" firstAttribute="centerY" secondItem="nFt-Tj-nsV" secondAttribute="centerY" id="3Ui-AG-80k"/>
+                                <constraint firstAttribute="height" constant="26" id="Sn8-qk-VOK"/>
+                                <constraint firstAttribute="width" constant="76" id="Yvn-Hz-ZtR"/>
+                                <constraint firstItem="FPN-v9-q51" firstAttribute="centerX" secondItem="nFt-Tj-nsV" secondAttribute="centerX" id="syg-uc-dac"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
+                                    <real key="value" value="1"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="color" keyPath="borderColor">
+                                    <color key="value" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="13"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </view>
                     </subviews>
                     <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     <gestureRecognizers/>
                     <constraints>
                         <constraint firstItem="ebm-D0-ZwZ" firstAttribute="centerY" secondItem="pUs-nj-cKV" secondAttribute="centerY" id="9ce-nN-JeR"/>
-                        <constraint firstItem="lrj-nH-46q" firstAttribute="top" secondItem="Jzj-07-uBu" secondAttribute="top" constant="12" id="Xw7-KT-WjY"/>
+                        <constraint firstItem="lrj-nH-46q" firstAttribute="top" secondItem="Jzj-07-uBu" secondAttribute="top" constant="10" id="Xw7-KT-WjY"/>
+                        <constraint firstItem="nFt-Tj-nsV" firstAttribute="leading" secondItem="lrj-nH-46q" secondAttribute="trailing" constant="10" id="XwQ-Yn-bi0"/>
                         <constraint firstAttribute="height" constant="70" id="bQc-MO-m30"/>
-                        <constraint firstItem="I3Y-BW-zVy" firstAttribute="centerY" secondItem="Jzj-07-uBu" secondAttribute="centerY" id="cid-QZ-ZHY"/>
-                        <constraint firstItem="ebm-D0-ZwZ" firstAttribute="leading" secondItem="pUs-nj-cKV" secondAttribute="trailing" constant="5" id="h4M-10-9kQ"/>
-                        <constraint firstItem="lrj-nH-46q" firstAttribute="leading" secondItem="Jzj-07-uBu" secondAttribute="leading" constant="128" id="qOf-lx-0rA"/>
+                        <constraint firstItem="nFt-Tj-nsV" firstAttribute="centerY" secondItem="Jzj-07-uBu" secondAttribute="centerY" id="daR-xM-DE0"/>
+                        <constraint firstAttribute="trailing" secondItem="nFt-Tj-nsV" secondAttribute="trailing" constant="16" id="e4c-8z-JUt"/>
+                        <constraint firstItem="ebm-D0-ZwZ" firstAttribute="leading" secondItem="pUs-nj-cKV" secondAttribute="trailing" constant="8" id="h4M-10-9kQ"/>
+                        <constraint firstItem="lrj-nH-46q" firstAttribute="leading" secondItem="Jzj-07-uBu" secondAttribute="leading" constant="16" id="qOf-lx-0rA"/>
                         <constraint firstItem="pUs-nj-cKV" firstAttribute="top" secondItem="lrj-nH-46q" secondAttribute="bottom" constant="2" id="qbO-gb-XFq"/>
                         <constraint firstItem="pUs-nj-cKV" firstAttribute="leading" secondItem="lrj-nH-46q" secondAttribute="leading" id="tuQ-H0-4Df"/>
-                        <constraint firstAttribute="trailing" secondItem="I3Y-BW-zVy" secondAttribute="trailing" constant="11" id="txu-hF-IbY"/>
                     </constraints>
                     <userDefinedRuntimeAttributes>
                         <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                             <real key="value" value="10"/>
                         </userDefinedRuntimeAttribute>
                         <userDefinedRuntimeAttribute type="color" keyPath="borderColor">
-                            <color key="value" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
-                            <size key="value" width="0.0" height="2"/>
+                            <color key="value" red="0.96078431372549022" green="0.96078431372549022" blue="0.96078431372549022" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
-                            <color key="value" red="0.89803921568627454" green="0.89803921568627454" blue="0.89803921568627454" alpha="0.10000000000000001" colorSpace="custom" customColorSpace="calibratedRGB"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
+                        <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
                             <real key="value" value="1"/>
                         </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
-                            <real key="value" value="2"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
                     </userDefinedRuntimeAttributes>
                     <connections>
                         <outletCollection property="gestureRecognizers" destination="rx0-oN-RKL" appends="YES" id="iaQ-no-GiC"/>
                     </connections>
                 </view>
-                <imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="vsd-sl-jtT">
-                    <rect key="frame" x="14" y="-1" width="128" height="91"/>
-                    <constraints>
-                        <constraint firstAttribute="height" constant="91" id="mxA-fh-cAU"/>
-                        <constraint firstAttribute="width" constant="128" id="u3O-yc-01G"/>
-                    </constraints>
-                </imageView>
-                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aUl-ls-p4K">
-                    <rect key="frame" x="14" y="-1" width="128" height="91"/>
-                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                </view>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
-                <constraint firstAttribute="bottom" secondItem="Jzj-07-uBu" secondAttribute="bottom" id="A8I-iS-zIQ"/>
                 <constraint firstItem="Jzj-07-uBu" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="DgC-Xy-byN"/>
-                <constraint firstItem="aUl-ls-p4K" firstAttribute="bottom" secondItem="vsd-sl-jtT" secondAttribute="bottom" id="ZQt-az-0Mr"/>
                 <constraint firstAttribute="trailing" secondItem="Jzj-07-uBu" secondAttribute="trailing" constant="14" id="feY-bv-SDH"/>
-                <constraint firstItem="aUl-ls-p4K" firstAttribute="trailing" secondItem="vsd-sl-jtT" secondAttribute="trailing" id="g9B-UY-EHi"/>
-                <constraint firstItem="aUl-ls-p4K" firstAttribute="top" secondItem="vsd-sl-jtT" secondAttribute="top" id="gPk-3u-lmO"/>
-                <constraint firstItem="aUl-ls-p4K" firstAttribute="leading" secondItem="vsd-sl-jtT" secondAttribute="leading" id="hcn-Q6-rgN"/>
-                <constraint firstItem="vsd-sl-jtT" firstAttribute="bottom" secondItem="Jzj-07-uBu" secondAttribute="bottom" id="jb1-gr-dzL"/>
-                <constraint firstItem="vsd-sl-jtT" firstAttribute="leading" secondItem="Jzj-07-uBu" secondAttribute="leading" id="lY2-L7-ltx"/>
+                <constraint firstItem="Jzj-07-uBu" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="wPQ-OB-WHG"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <connections>
-                <outlet property="imageBgView" destination="aUl-ls-p4K" id="cy9-xy-XoE"/>
+                <outlet property="statusBgView" destination="nFt-Tj-nsV" id="JCH-sq-8Ss"/>
+                <outlet property="statusLabel" destination="FPN-v9-q51" id="W5n-8n-1yq"/>
                 <outlet property="timeLabel" destination="ebm-D0-ZwZ" id="N8s-Fo-9jS"/>
                 <outlet property="titleLabel" destination="lrj-nH-46q" id="y9y-NQ-vDX"/>
             </connections>
@@ -117,7 +122,9 @@
         </tapGestureRecognizer>
     </objects>
     <resources>
-        <image name="course_tips" width="15" height="14"/>
-        <image name="home_courseNext" width="18" height="18"/>
+        <image name="course_tips" width="14.5" height="14"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
     </resources>
 </document>

+ 3 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserInfo.h

@@ -60,6 +60,9 @@
 @property (nonatomic, assign) NSInteger customerServiceNum; // 客服数量
 @property (nonatomic, strong) NSString *imCustomerId; // 客服
 
+@property (nonatomic, strong) NSString *discountStartTime;
+@property (nonatomic, strong) NSString *discountEndTime;
+
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;
 - (NSDictionary *)dictionaryRepresentation;

+ 18 - 1
KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserInfo.m

@@ -56,6 +56,10 @@ NSString *const kUserInfoUserVip = @"userVip";
 NSString *const kUserInfoUserCustomerServiceNum = @"customerServiceNum";
 NSString *const kUserInfoUserImCustomerId = @"imCustomerId";
 
+NSString *const kUserInfoUserDiscountStartTime = @"discountStartTime";
+NSString *const kUserInfoUserDiscountEndTime = @"discountEndTime";
+
+
 @interface UserInfo ()
 
 - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
@@ -110,6 +114,9 @@ NSString *const kUserInfoUserImCustomerId = @"imCustomerId";
 @synthesize userVip = _userVip;
 @synthesize customerServiceNum = _customerServiceNum;
 @synthesize imCustomerId = _imCustomerId;
+@synthesize discountStartTime = _discountStartTime;
+@synthesize discountEndTime = _discountEndTime;
+
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -169,7 +176,8 @@ NSString *const kUserInfoUserImCustomerId = @"imCustomerId";
         self.userVip = [UserVip modelObjectWithDictionary:[dict objectForKey:kUserInfoUserVip]];
         self.customerServiceNum = [[self objectOrNilForKey:kUserInfoUserCustomerServiceNum fromDictionary:dict] integerValue];
         self.imCustomerId = [self objectOrNilForKey:kUserInfoUserImCustomerId fromDictionary:dict];
-
+        self.discountStartTime = [self objectOrNilForKey:kUserInfoUserDiscountStartTime fromDictionary:dict];
+        self.discountEndTime = [self objectOrNilForKey:kUserInfoUserDiscountEndTime fromDictionary:dict];
     }
     
     return self;
@@ -225,6 +233,8 @@ NSString *const kUserInfoUserImCustomerId = @"imCustomerId";
     [mutableDict setValue:[self.userVip dictionaryRepresentation] forKey:kUserInfoUserVip];
     [mutableDict setValue:[NSNumber numberWithInteger:self.customerServiceNum] forKey:kUserInfoUserCustomerServiceNum];
     [mutableDict setValue:self.imCustomerId forKey:kUserInfoUserImCustomerId];
+    [mutableDict setValue:self.discountStartTime forKey:kUserInfoUserDiscountStartTime];
+    [mutableDict setValue:self.discountEndTime forKey:kUserInfoUserDiscountEndTime];
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -297,6 +307,9 @@ NSString *const kUserInfoUserImCustomerId = @"imCustomerId";
     self.userVip = [aDecoder decodeObjectForKey:kUserInfoUserVip];
     self.customerServiceNum = [aDecoder decodeIntegerForKey:kUserInfoUserCustomerServiceNum];
     self.imCustomerId = [aDecoder decodeObjectForKey:kUserInfoUserImCustomerId];
+    self.discountStartTime = [aDecoder decodeObjectForKey:kUserInfoUserDiscountStartTime];
+    self.discountEndTime = [aDecoder decodeObjectForKey:kUserInfoUserDiscountEndTime];
+    
     return self;
 }
 
@@ -349,6 +362,8 @@ NSString *const kUserInfoUserImCustomerId = @"imCustomerId";
     [aCoder encodeObject:_userVip forKey:kUserInfoUserVip];
     [aCoder encodeInteger:_customerServiceNum forKey:kUserInfoUserCustomerServiceNum];
     [aCoder encodeObject:_imCustomerId forKey:kUserInfoUserImCustomerId];
+    [aCoder encodeObject:_discountStartTime forKey:kUserInfoUserDiscountStartTime];
+    [aCoder encodeObject:_discountEndTime forKey:kUserInfoUserDiscountEndTime];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -403,6 +418,8 @@ NSString *const kUserInfoUserImCustomerId = @"imCustomerId";
         copy.userVip = [self.userVip copyWithZone:zone];
         copy.customerServiceNum = self.customerServiceNum;
         copy.imCustomerId = [self.imCustomerId copyWithZone:zone];
+        copy.discountStartTime = [self.discountStartTime copyWithZone:zone];
+        copy.discountEndTime = [self.discountEndTime copyWithZone:zone];
     }
     
     return copy;

+ 24 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Controller/MineViewController.m

@@ -38,6 +38,8 @@
 
 @property (nonatomic, strong) dispatch_group_t requestGroup;
 
+//@property ()
+
 
 @end
 
@@ -115,6 +117,7 @@
     [LOADING_MANAGER showHUD];
     [self requsetUserMessage];
     [self requestUserMemo];
+    [self requestConfig];
     
     dispatch_group_notify(self.requestGroup, dispatch_get_main_queue(), ^{
         [LOADING_MANAGER removeHUD];
@@ -138,6 +141,20 @@
     }];
 }
 
+- (void)requestConfig {
+    dispatch_group_enter(self.requestGroup);
+    [KSNetworkingManager queryByParamName:KS_GET paramName:@"vip_open_tips" success:^(NSDictionary * _Nonnull dic) {
+        if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
+            NSString *tipsConfig = [[dic ks_dictionaryValueForKey:@"data"] ks_stringValueForKey:@"paramValue"];
+            NSArray *configArray = [tipsConfig mj_JSONObject];
+            self.bodyView.configArray = [configArray copy];
+        }
+        dispatch_group_leave(self.requestGroup);
+    } faliure:^(NSError * _Nonnull error) {
+        dispatch_group_leave(self.requestGroup);
+    }];
+}
+
 - (void)refreshBodyView:(BOOL)isMember {
     self.bodyView.isMember = isMember;
 }
@@ -160,6 +177,13 @@
             [self.navigationController pushViewController:ctrl animated:YES];
         }
             break;
+        case MINEVIEWTAG_CARD: // card
+        {
+            KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
+            ctrl.url = [NSString stringWithFormat:@"%@%@",WEBHOST,@"/#/memberCenter"];
+            [self.navigationController pushViewController:ctrl animated:YES];
+        }
+            break;
         case MINEVIEWTYPE_COURSE:
         {
             MyCourseViewController *ctrl = [[MyCourseViewController alloc] init];

+ 25 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/KSMemberView.h

@@ -0,0 +1,25 @@
+//
+//  KSMemberView.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2024/11/27.
+//
+
+#import <UIKit/UIKit.h>
+#import "UserInfo.h"
+
+typedef void(^MemberCallback)(BOOL toCourseCenter);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KSMemberView : UIView
+
++ (instancetype)sharedInstance;
+
+- (void)configWithSource:(UserInfo *)sourceModel config:(NSArray *)config callback:(MemberCallback)callback;
+
++ (CGFloat)getViewHeight;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 143 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/KSMemberView.m

@@ -0,0 +1,143 @@
+//
+//  KSMemberView.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2024/11/27.
+//
+
+#import "KSMemberView.h"
+#import "UIView+KSLayer.h"
+
+@interface KSMemberView ()
+
+@property (weak, nonatomic) IBOutlet UIView *memberBgView;
+
+@property (weak, nonatomic) IBOutlet UIView *memberView;
+
+@property (weak, nonatomic) IBOutlet UIImageView *mmeberBgImage;
+
+@property (weak, nonatomic) IBOutlet UILabel *memberTitle;
+
+@property (weak, nonatomic) IBOutlet UILabel *memberDesc;
+
+@property (weak, nonatomic) IBOutlet UIView *cardBgView;
+
+@property (weak, nonatomic) IBOutlet UIView *cardView;
+
+@property (weak, nonatomic) IBOutlet UILabel *cardTitle;
+
+@property (weak, nonatomic) IBOutlet UILabel *cardDesc;
+
+@property (nonatomic, strong) NSString *memberDefaultDesc;
+
+@property (nonatomic, strong) NSString *courseDefaultDesc;
+
+@property (nonatomic, copy) MemberCallback callback;
+
+@end
+
+@implementation KSMemberView
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    CGRect bounce = CGRectMake(0, 0, (KPortraitWidth - 14 * 2 - 11) / 2.0f, 70);
+    CAGradientLayer *memberBgLayer = [UIView createGradientLayerFromColor:HexRGB(0xFFF7E0) startPoint:CGPointMake(0, 0) endColor:HexRGB(0xFFE2A2) endPoint:CGPointMake(1, 0.9) bounds:bounce];
+    memberBgLayer.cornerRadius = 10;
+    [self.memberBgView.layer addSublayer:memberBgLayer];
+    CAGradientLayer *memberBorderLayer = [UIView createOutBgLayerFromColor:HexRGB(0xffffff) startPoint:CGPointMake(0.5, 0) endColor:HexRGBAlpha(0xffffff, 0.5f) endPoint:CGPointMake(0.5, 1) bounds:bounce radius:10 lineWidth:2];
+    [self.memberBgView.layer addSublayer:memberBorderLayer];
+    
+    CAGradientLayer *cardBgLayer = [UIView createGradientLayerFromColor:HexRGB(0x9DD7FF) startPoint:CGPointMake(0.98, 1) endColor:HexRGB(0xE8F6FF) endPoint:CGPointMake(0.02, 0.06) bounds:bounce];
+    cardBgLayer.cornerRadius = 10;
+    [self.cardBgView.layer addSublayer:cardBgLayer];
+    
+    CAGradientLayer *cardBorderLayer = [UIView createOutBgLayerFromColor:HexRGB(0xffffff) startPoint:CGPointMake(0.5, 0) endColor:HexRGBAlpha(0xffffff, 0.5f) endPoint:CGPointMake(0.5, 1) bounds:bounce radius:10 lineWidth:2];
+    [self.cardBgView.layer addSublayer:cardBorderLayer];
+    
+}
+
++ (instancetype)sharedInstance {
+    KSMemberView *view = [[[NSBundle mainBundle] loadNibNamed:@"KSMemberView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)configWithSource:(UserInfo *)sourceModel config:(NSArray *)config callback:(MemberCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+    for (NSDictionary *parm in config) {
+        if ([[parm ks_stringValueForKey:@"cardType"] isEqualToString:@"VIP"]) {
+            self.memberDefaultDesc = [parm ks_stringValueForKey:@"tips"];
+        }
+        else if ([[parm ks_stringValueForKey:@"cardType"] isEqualToString:@"DISCOUNT"]) {
+            self.courseDefaultDesc = [parm ks_stringValueForKey:@"tips"];
+        }
+    }
+    [self configMemberDisplay:sourceModel.userVip];
+    if ([NSString isEmptyString:sourceModel.discountEndTime]) {
+        self.cardTitle.text = @"开通畅学卡";
+        self.cardDesc.text = [NSString returnNoNullStringWithString:self.courseDefaultDesc];
+    }
+    else {
+        self.cardTitle.text = @"畅学卡";
+        NSString *timeStr = [[sourceModel.discountEndTime componentsSeparatedByString:@" "] firstObject];
+        self.cardDesc.text = [NSString stringWithFormat:@"有效期至%@", [NSString returnNoNullStringWithString:timeStr]];
+    }
+}
+
+
+- (void)configMemberDisplay:(UserVip *)userVip {
+    
+    NSString *displayImg = nil;
+    NSString *memberDesc = nil;
+    NSString *memberTitle = nil;
+    if ([userVip.vipType isEqualToString:@"PERMANENT_SVIP"]) {
+        displayImg = @"member_card_bg_s";
+        memberDesc = @"您已是永久SVIP";
+        memberTitle = @"SVIP会员";
+    }
+    else if ([userVip.vipType isEqualToString:@"SVIP"]) {
+        displayImg = @"member_card_bg_s";
+        NSString *timeStr = [[userVip.svipEndDate componentsSeparatedByString:@" "] firstObject];
+        memberDesc = [NSString stringWithFormat:@"有效期至%@", [NSString returnNoNullStringWithString:timeStr]];
+        memberTitle = @"SVIP会员";
+    }
+    else if ([userVip.vipType isEqualToString:@"VIP"]) {
+        displayImg = @"member_card_bg";
+        NSString *timeStr = [[userVip.vipEndDate componentsSeparatedByString:@" "] firstObject];
+        memberDesc = [NSString stringWithFormat:@"有效期至%@", [NSString returnNoNullStringWithString:timeStr]];
+        memberTitle = @"VIP会员";
+    }
+    else {
+        displayImg = @"member_card_bg";
+        memberDesc = [NSString returnNoNullStringWithString:self.memberDefaultDesc];
+        memberTitle = @"开通会员";
+    }
+    [self.mmeberBgImage setImage:[UIImage imageNamed:displayImg]];
+    self.memberDesc.text = memberDesc;
+    self.memberTitle.text = memberTitle;
+}
+
+- (IBAction)toMemberCenter:(id)sender {
+    if (self.callback) {
+        self.callback(NO);
+    }
+}
+
+- (IBAction)showCourseCenter:(id)sender {
+    if (self.callback) {
+        self.callback(YES);
+    }
+}
+
++ (CGFloat)getViewHeight {
+    return 84.0f;
+}
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 194 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/KSMemberView.xib

@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="KSMemberView">
+            <rect key="frame" x="0.0" y="0.0" width="393" height="84"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Z4n-dI-rv6">
+                    <rect key="frame" x="14" y="1" width="365" height="70"/>
+                    <subviews>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="B6e-yP-J5M">
+                            <rect key="frame" x="0.0" y="0.0" width="177" height="70"/>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fIH-x9-ZEj">
+                            <rect key="frame" x="0.0" y="0.0" width="177" height="70"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="member_card_bg" translatesAutoresizingMaskIntoConstraints="NO" id="SC0-0H-bcJ">
+                                    <rect key="frame" x="107" y="0.0" width="70" height="70"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" secondItem="SC0-0H-bcJ" secondAttribute="height" multiplier="1:1" id="n55-27-Mn2"/>
+                                    </constraints>
+                                </imageView>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="开通会员" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vwl-kQ-CIS">
+                                    <rect key="frame" x="10" y="15" width="56" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="rjb-mT-bCo"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
+                                    <color key="textColor" red="0.38431372549019605" green="0.15686274509803921" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="member_card_next" translatesAutoresizingMaskIntoConstraints="NO" id="oqW-oX-dVc">
+                                    <rect key="frame" x="68" y="20" width="10" height="10"/>
+                                </imageView>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="双十二特惠,多重好礼!" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CCj-9v-ljd">
+                                    <rect key="frame" x="10" y="40" width="157" height="17"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="17" id="dNa-Pf-XW5"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                    <color key="textColor" red="0.40000000000000002" green="0.20784313725490194" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="I7j-pE-NdM">
+                                    <rect key="frame" x="0.0" y="0.0" width="177" height="70"/>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <connections>
+                                        <action selector="toMemberCenter:" destination="iN0-l3-epB" eventType="touchUpInside" id="Rav-d8-1eO"/>
+                                    </connections>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="SC0-0H-bcJ" secondAttribute="trailing" id="4Mr-CB-bsx"/>
+                                <constraint firstItem="SC0-0H-bcJ" firstAttribute="top" secondItem="fIH-x9-ZEj" secondAttribute="top" id="6Pe-Q5-jXU"/>
+                                <constraint firstItem="oqW-oX-dVc" firstAttribute="leading" secondItem="Vwl-kQ-CIS" secondAttribute="trailing" constant="2" id="AIB-4N-emP"/>
+                                <constraint firstItem="Vwl-kQ-CIS" firstAttribute="leading" secondItem="fIH-x9-ZEj" secondAttribute="leading" constant="10" id="Ewc-el-qPD"/>
+                                <constraint firstItem="Vwl-kQ-CIS" firstAttribute="top" secondItem="fIH-x9-ZEj" secondAttribute="top" constant="15" id="LZY-TT-fn6"/>
+                                <constraint firstAttribute="trailing" secondItem="I7j-pE-NdM" secondAttribute="trailing" id="MQn-4h-WLh"/>
+                                <constraint firstAttribute="trailing" secondItem="CCj-9v-ljd" secondAttribute="trailing" constant="10" id="YON-Dx-fBg"/>
+                                <constraint firstAttribute="bottom" secondItem="SC0-0H-bcJ" secondAttribute="bottom" id="a3H-eT-zFg"/>
+                                <constraint firstItem="I7j-pE-NdM" firstAttribute="leading" secondItem="fIH-x9-ZEj" secondAttribute="leading" id="dGb-JA-LT6"/>
+                                <constraint firstAttribute="bottom" secondItem="I7j-pE-NdM" secondAttribute="bottom" id="hXW-bz-16E"/>
+                                <constraint firstItem="I7j-pE-NdM" firstAttribute="top" secondItem="fIH-x9-ZEj" secondAttribute="top" id="mdr-7i-c4z"/>
+                                <constraint firstItem="oqW-oX-dVc" firstAttribute="centerY" secondItem="Vwl-kQ-CIS" secondAttribute="centerY" id="tlf-xX-GzI"/>
+                                <constraint firstItem="CCj-9v-ljd" firstAttribute="top" secondItem="Vwl-kQ-CIS" secondAttribute="bottom" constant="5" id="vLI-SI-Hoh"/>
+                                <constraint firstItem="CCj-9v-ljd" firstAttribute="leading" secondItem="Vwl-kQ-CIS" secondAttribute="leading" id="x7e-Zi-jpl"/>
+                            </constraints>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3AI-vf-gYc">
+                            <rect key="frame" x="188" y="0.0" width="177" height="70"/>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xCp-ja-bA1">
+                            <rect key="frame" x="188" y="0.0" width="177" height="70"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="courseCard_bg" translatesAutoresizingMaskIntoConstraints="NO" id="4e4-iI-1GJ">
+                                    <rect key="frame" x="107" y="0.0" width="70" height="70"/>
+                                </imageView>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="开通畅学卡" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vFj-HH-HAY">
+                                    <rect key="frame" x="10" y="15" width="69.666666666666671" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="sHV-8B-4QT"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
+                                    <color key="textColor" red="0.0" green="0.43137254901960786" blue="0.69019607843137254" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_card_next" translatesAutoresizingMaskIntoConstraints="NO" id="CiA-eA-Cip">
+                                    <rect key="frame" x="81.666666666666686" y="20" width="10" height="10"/>
+                                </imageView>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="约课低至75折!" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8L4-kB-kTk">
+                                    <rect key="frame" x="10" y="40" width="157" height="17"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="17" id="tJB-5d-Jaq"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                    <color key="textColor" red="0.0" green="0.35686274509803922" blue="0.63529411764705879" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ms1-yP-KLY">
+                                    <rect key="frame" x="0.0" y="0.0" width="177" height="70"/>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <connections>
+                                        <action selector="showCourseCenter:" destination="iN0-l3-epB" eventType="touchUpInside" id="OGR-4Q-eL2"/>
+                                    </connections>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstAttribute="bottom" secondItem="4e4-iI-1GJ" secondAttribute="bottom" id="211-Va-K2j"/>
+                                <constraint firstAttribute="trailing" secondItem="4e4-iI-1GJ" secondAttribute="trailing" id="7Cj-Sq-enr"/>
+                                <constraint firstItem="CiA-eA-Cip" firstAttribute="centerY" secondItem="vFj-HH-HAY" secondAttribute="centerY" id="7iD-Ph-6kp"/>
+                                <constraint firstItem="8L4-kB-kTk" firstAttribute="leading" secondItem="vFj-HH-HAY" secondAttribute="leading" id="9HX-qy-nA3"/>
+                                <constraint firstItem="CiA-eA-Cip" firstAttribute="leading" secondItem="vFj-HH-HAY" secondAttribute="trailing" constant="2" id="Ag0-Cb-RUG"/>
+                                <constraint firstAttribute="trailing" secondItem="8L4-kB-kTk" secondAttribute="trailing" constant="10" id="Iyo-ux-Lri"/>
+                                <constraint firstItem="ms1-yP-KLY" firstAttribute="leading" secondItem="xCp-ja-bA1" secondAttribute="leading" id="JM0-mq-5A6"/>
+                                <constraint firstItem="vFj-HH-HAY" firstAttribute="top" secondItem="xCp-ja-bA1" secondAttribute="top" constant="15" id="MYr-UO-WoM"/>
+                                <constraint firstItem="4e4-iI-1GJ" firstAttribute="top" secondItem="xCp-ja-bA1" secondAttribute="top" id="WFC-QD-tCM"/>
+                                <constraint firstItem="8L4-kB-kTk" firstAttribute="top" secondItem="vFj-HH-HAY" secondAttribute="bottom" constant="5" id="cBB-Bd-ofL"/>
+                                <constraint firstAttribute="bottom" secondItem="ms1-yP-KLY" secondAttribute="bottom" id="dYo-E4-oQ6"/>
+                                <constraint firstAttribute="trailing" secondItem="ms1-yP-KLY" secondAttribute="trailing" id="ete-Cm-Ksd"/>
+                                <constraint firstItem="vFj-HH-HAY" firstAttribute="leading" secondItem="xCp-ja-bA1" secondAttribute="leading" constant="10" id="tbQ-Kq-Vow"/>
+                                <constraint firstItem="ms1-yP-KLY" firstAttribute="top" secondItem="xCp-ja-bA1" secondAttribute="top" id="uQj-yv-1Hd"/>
+                            </constraints>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="3AI-vf-gYc" firstAttribute="width" secondItem="B6e-yP-J5M" secondAttribute="width" id="8a2-12-LCc"/>
+                        <constraint firstItem="fIH-x9-ZEj" firstAttribute="trailing" secondItem="B6e-yP-J5M" secondAttribute="trailing" id="9r5-UT-NKz"/>
+                        <constraint firstItem="fIH-x9-ZEj" firstAttribute="leading" secondItem="B6e-yP-J5M" secondAttribute="leading" id="9xI-UN-5Bz"/>
+                        <constraint firstItem="fIH-x9-ZEj" firstAttribute="bottom" secondItem="B6e-yP-J5M" secondAttribute="bottom" id="I76-kU-zwK"/>
+                        <constraint firstItem="B6e-yP-J5M" firstAttribute="top" secondItem="Z4n-dI-rv6" secondAttribute="top" id="KLI-Fp-7GG"/>
+                        <constraint firstAttribute="trailing" secondItem="3AI-vf-gYc" secondAttribute="trailing" id="Lgk-nb-sNV"/>
+                        <constraint firstItem="3AI-vf-gYc" firstAttribute="leading" secondItem="B6e-yP-J5M" secondAttribute="trailing" constant="11" id="Qdg-8W-jdt"/>
+                        <constraint firstItem="3AI-vf-gYc" firstAttribute="trailing" secondItem="xCp-ja-bA1" secondAttribute="trailing" id="UYi-yq-DaR"/>
+                        <constraint firstItem="3AI-vf-gYc" firstAttribute="top" secondItem="Z4n-dI-rv6" secondAttribute="top" id="UmX-IV-esK"/>
+                        <constraint firstItem="3AI-vf-gYc" firstAttribute="leading" secondItem="xCp-ja-bA1" secondAttribute="leading" id="UyP-Ng-MPI"/>
+                        <constraint firstAttribute="bottom" secondItem="3AI-vf-gYc" secondAttribute="bottom" id="YMa-3Q-hRg"/>
+                        <constraint firstItem="B6e-yP-J5M" firstAttribute="leading" secondItem="Z4n-dI-rv6" secondAttribute="leading" id="a6y-x7-Rc2"/>
+                        <constraint firstItem="3AI-vf-gYc" firstAttribute="bottom" secondItem="xCp-ja-bA1" secondAttribute="bottom" id="aTS-Vk-2vu"/>
+                        <constraint firstItem="3AI-vf-gYc" firstAttribute="top" secondItem="xCp-ja-bA1" secondAttribute="top" id="eiz-jT-jJH"/>
+                        <constraint firstAttribute="bottom" secondItem="B6e-yP-J5M" secondAttribute="bottom" id="eyn-NB-vbp"/>
+                        <constraint firstItem="fIH-x9-ZEj" firstAttribute="top" secondItem="B6e-yP-J5M" secondAttribute="top" id="xmi-Jc-N0T"/>
+                    </constraints>
+                </view>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="Z4n-dI-rv6" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="1" id="5Zn-9d-dGn"/>
+                <constraint firstItem="Z4n-dI-rv6" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="PSc-t0-QSu"/>
+                <constraint firstAttribute="bottom" secondItem="Z4n-dI-rv6" secondAttribute="bottom" constant="13" id="xRs-iq-C2j"/>
+                <constraint firstAttribute="trailing" secondItem="Z4n-dI-rv6" secondAttribute="trailing" constant="14" id="ydI-Hd-Cop"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="cardBgView" destination="3AI-vf-gYc" id="wZq-vk-g9Z"/>
+                <outlet property="cardDesc" destination="8L4-kB-kTk" id="hdh-LT-wTj"/>
+                <outlet property="cardTitle" destination="vFj-HH-HAY" id="fCk-Y7-J0z"/>
+                <outlet property="cardView" destination="xCp-ja-bA1" id="XGx-Yd-a2x"/>
+                <outlet property="memberBgView" destination="B6e-yP-J5M" id="7E0-NY-oCs"/>
+                <outlet property="memberDesc" destination="CCj-9v-ljd" id="ymw-kv-986"/>
+                <outlet property="memberTitle" destination="Vwl-kQ-CIS" id="ChU-He-e77"/>
+                <outlet property="memberView" destination="fIH-x9-ZEj" id="hfU-wo-FqH"/>
+                <outlet property="mmeberBgImage" destination="SC0-0H-bcJ" id="Wry-Bl-kLZ"/>
+            </connections>
+            <point key="canvasLocation" x="49.618320610687022" y="82.394366197183103"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="courseCard_bg" width="70" height="70"/>
+        <image name="course_card_next" width="10" height="10"/>
+        <image name="member_card_bg" width="70" height="70"/>
+        <image name="member_card_next" width="10" height="10"/>
+    </resources>
+</document>

+ 3 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.h

@@ -29,6 +29,7 @@ typedef NS_ENUM(NSInteger, MINEVIEWTYPE) {
     MINEVIEWTYPE_AWARD,   // 活动奖品
     MINEVIEWTAG_WORKS,    // 我的作品
     MINEVIEWTAG_CUSTOMSERVICE = 1020, // 客服
+    MINEVIEWTAG_CARD,
 };
 typedef void(^MineViewCallback)(MINEVIEWTYPE type);
 
@@ -36,6 +37,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface MineBodyView : UIView
 
+@property (nonatomic, strong) NSArray *configArray;
+
 @property (nonatomic, assign) BOOL isMember;
 
 @property (nonatomic, assign) BOOL hasCustomService;

+ 24 - 72
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.m

@@ -7,6 +7,7 @@
 
 #import "MineBodyView.h"
 #import <UIImageView+DisplayImage.h>
+#import "KSMemberView.h"
 
 @interface MineBodyView ()
 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *avatarWidth;
@@ -37,21 +38,18 @@
 
 @property (weak, nonatomic) IBOutlet UILabel *userIdLabel;
 
-@property (weak, nonatomic) IBOutlet UILabel *memberCountLabel;
-
 @property (nonatomic, copy) MineViewCallback callback;
 
 @property (weak, nonatomic) IBOutlet UIImageView *viperImage;
 
-@property (weak, nonatomic) IBOutlet NSLayoutConstraint *tagViewWidth;
-@property (weak, nonatomic) IBOutlet UIImageView *memberLogoTag;
-@property (weak, nonatomic) IBOutlet NSLayoutConstraint *memberDescLeft;
 
 @property (weak, nonatomic) IBOutlet UIView *costomserviceView;
 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *costomserviceViewHeight;
 
 @property (nonatomic, strong) UIImage *preDisplayImage;
 
+@property (nonatomic, strong) KSMemberView *memberCenterView;
+
 @end
 
 @implementation MineBodyView
@@ -63,6 +61,10 @@
         self.avatarWidth.constant = 72.0f;
         self.userAvatar.layer.cornerRadius = 36.0f;
     }
+    [self.memberView addSubview:self.memberCenterView];
+    [self.memberCenterView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.top.bottom.mas_equalTo(self.memberView);
+    }];
 }
 
 + (instancetype)shareInstance {
@@ -77,6 +79,10 @@
 }
 
 - (void)configWithSource:(UserInfo *)sourceModel {
+    MJWeakSelf;
+    [self.memberCenterView configWithSource:sourceModel config:self.configArray callback:^(BOOL toCourseCenter) {
+        [weakSelf cardAction:toCourseCenter];
+    }];
     NSString *viperImage = @"";
     if ([sourceModel.userVip.vipType isEqualToString:@"PERMANENT_SVIP"] || [sourceModel.userVip.vipType isEqualToString:@"SVIP"]) {
         self.userAvatar.layer.borderColor = HexRGB(0xF0AF88).CGColor;
@@ -105,9 +111,7 @@
     }
     self.userName.text = userName;
     self.userIdLabel.text = [NSString stringWithFormat:@"学号:%.0f",sourceModel.userId];
-    
-    [self configMemberDisplay:sourceModel.userVip];
-    
+        
     if (![NSString isEmptyString:sourceModel.heardUrl]) {
         [self.userAvatar displayImageWithUrl:[NSURL URLWithString:[sourceModel.heardUrl getUrlEndcodeString]] placeholder:self.preDisplayImage defaultImage:[UIImage imageNamed:STUDENT_AVATAR] callback:^(UIImage * _Nonnull image) {
             self.preDisplayImage = image;
@@ -127,76 +131,18 @@
     }
 }
 
-- (void)configMemberDisplay:(UserVip *)userVip {
-    NSString *displayImg = @"";
-    NSMutableAttributedString *descAttr = nil;
-    if ([userVip.vipType isEqualToString:@"PERMANENT_SVIP"]) {
-        displayImg = @"mineCenter_tagSvip";
-        NSString *desc = @"您已是永久SVIP";
-        descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
-        [descAttr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightMedium], NSForegroundColorAttributeName:HexRGB(0xFF623A)} range:[desc rangeOfString:@"永久SVIP"]];
-    }
-    else if ([userVip.vipType isEqualToString:@"SVIP"]) {
-        displayImg = @"mineCenter_tagSvip";
-        NSString *timeStr = [[userVip.svipEndDate componentsSeparatedByString:@" "] firstObject];
-        NSString *desc = [NSString stringWithFormat:@"SVIP有效期至 %@", [NSString returnNoNullStringWithString:timeStr]];
-        
-        descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
-        [descAttr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightMedium], NSForegroundColorAttributeName:HexRGB(0xFF623A)} range:[desc rangeOfString:timeStr]];
-        
-    }
-    else if ([userVip.vipType isEqualToString:@"VIP"]) {
-        displayImg = @"mineCenter_tagVip";
-        NSString *timeStr = [[userVip.vipEndDate componentsSeparatedByString:@" "] firstObject];
-        NSString *desc = [NSString stringWithFormat:@"VIP有效期至 %@", [NSString returnNoNullStringWithString:timeStr]];
-        
-        descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
-        [descAttr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightMedium], NSForegroundColorAttributeName:HexRGB(0xFF623A)} range:[desc rangeOfString:timeStr]];
-    }
-    else {
-        if ([NSString isEmptyString:userVip.expireVipType]) {
-            displayImg = @"";
-            NSString *desc = @"您还未开通会员哦~";
-            descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+- (void)cardAction:(BOOL)toCourseCenter {
+    if (self.callback) {
+        if (toCourseCenter) {
+            self.callback(MINEVIEWTAG_CARD);
         }
         else {
-            if ([userVip.expireVipType isEqualToString:@"SVIP"]) {
-                displayImg = @"mineCenter_tagSvipExpired";
-                NSString *desc = @"SVIP已过期";
-                descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
-            }
-            else if ([userVip.expireVipType isEqualToString:@"VIP"]) {
-                displayImg = @"mineCenter_tagVipExpired";
-                NSString *desc = @"VIP已过期";
-                descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
-            }
-            else if ([userVip.expireVipType isEqualToString:@"ALL_VIP"]) {
-                displayImg = @"";
-                NSString *desc = @"会员已过期";
-                descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
-            }
+            self.callback(MINEVIEWTYPE_MEMBER);
         }
     }
-    if ([NSString isEmptyString:displayImg]) {
-        self.memberDescLeft.constant = 0.0f;
-        self.tagViewWidth.constant = 0.0;
-    }
-    else {
-        self.memberDescLeft.constant = 5.0f;
-        self.tagViewWidth.constant = 18.0;
-    }
-    [self.memberLogoTag setImage:[UIImage imageNamed:displayImg]];
-    self.memberCountLabel.attributedText = descAttr;
-    
 }
 
 
-- (IBAction)toMemberDetail:(id)sender {
-    if (self.callback) {
-        self.callback(MINEVIEWTYPE_MEMBER);
-    }
-}
-
 - (IBAction)clickAction:(UITapGestureRecognizer *)sender {
     NSInteger index = sender.view.tag;
     
@@ -236,7 +182,7 @@
 - (void)setIsMember:(BOOL)isMember {
     _isMember = isMember;
     if (_isMember) {
-        self.memberViewHeight.constant = 82.0f;
+        self.memberViewHeight.constant = [KSMemberView getViewHeight];
         self.memberView.hidden = NO;
         self.recordView.hidden = NO;
         self.ticketView.hidden = NO;
@@ -264,6 +210,12 @@
     }
 }
 
+- (KSMemberView *)memberCenterView {
+    if (!_memberCenterView) {
+        _memberCenterView = [KSMemberView sharedInstance];
+    }
+    return _memberCenterView;
+}
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 33 - 85
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -15,7 +15,7 @@
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yLa-RZ-nEh">
-                    <rect key="frame" x="12" y="232" width="390" height="136"/>
+                    <rect key="frame" x="12" y="269" width="390" height="136"/>
                     <subviews>
                         <view tag="1002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Nn2-CW-v6f">
                             <rect key="frame" x="0.0" y="51" width="78" height="80"/>
@@ -28,7 +28,7 @@
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7uF-DV-to0">
-                                    <rect key="frame" x="14.5" y="49" width="49.5" height="16"/>
+                                    <rect key="frame" x="15" y="49" width="48" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="X1P-Nw-Edk"/>
                                     </constraints>
@@ -60,7 +60,7 @@
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的作业" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KmZ-cr-w2t">
-                                    <rect key="frame" x="14.5" y="49" width="49.5" height="16"/>
+                                    <rect key="frame" x="15" y="49" width="48" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="YX3-0u-sCQ"/>
                                     </constraints>
@@ -92,7 +92,7 @@
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的乐谱" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yk3-Vg-gpA">
-                                    <rect key="frame" x="14.5" y="49" width="49.5" height="16"/>
+                                    <rect key="frame" x="15" y="49" width="48" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="Tcg-31-kgD"/>
                                     </constraints>
@@ -124,7 +124,7 @@
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="评测记录" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="REa-UV-dzx">
-                                    <rect key="frame" x="14.5" y="49" width="49.5" height="16"/>
+                                    <rect key="frame" x="15" y="49" width="48" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="4uC-By-dPi"/>
                                     </constraints>
@@ -146,7 +146,7 @@
                             </connections>
                         </view>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学习工具" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LkY-49-jWP">
-                            <rect key="frame" x="14" y="14" width="66" height="22"/>
+                            <rect key="frame" x="14" y="14" width="64" height="22"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="22" id="sVU-GF-g0g"/>
                             </constraints>
@@ -165,7 +165,7 @@
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的作品" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4aV-MX-ykR">
-                                    <rect key="frame" x="14.5" y="49" width="49.5" height="16"/>
+                                    <rect key="frame" x="15" y="49" width="48" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="HMX-Ap-OJH"/>
                                     </constraints>
@@ -223,7 +223,7 @@
                     <rect key="frame" x="0.0" y="0.0" width="414" height="80"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="你好,游客" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kmw-KD-cZO">
-                            <rect key="frame" x="28" y="14" width="102" height="28"/>
+                            <rect key="frame" x="28" y="14" width="96.5" height="28"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="28" id="omD-Me-taX"/>
                             </constraints>
@@ -232,7 +232,7 @@
                             <nil key="highlightedColor"/>
                         </label>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XdJ-kZ-3mN">
-                            <rect key="frame" x="28" y="50" width="57.5" height="20"/>
+                            <rect key="frame" x="28" y="50" width="56.5" height="20"/>
                             <subviews>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_uid" translatesAutoresizingMaskIntoConstraints="NO" id="6Jm-Hh-zwj">
                                     <rect key="frame" x="6" y="4.5" width="11" height="11"/>
@@ -242,7 +242,7 @@
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学号:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yim-3c-rJe">
-                                    <rect key="frame" x="23" y="3" width="28.5" height="14"/>
+                                    <rect key="frame" x="23" y="3" width="27.5" height="14"/>
                                     <fontDescription key="fontDescription" type="system" pointSize="11"/>
                                     <color key="textColor" red="0.41568627450980389" green="0.41568627450980389" blue="0.41568627450980389" alpha="1" colorSpace="calibratedRGB"/>
                                     <nil key="highlightedColor"/>
@@ -264,10 +264,10 @@
                             </userDefinedRuntimeAttributes>
                         </view>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NZg-rk-TQZ">
-                            <rect key="frame" x="93.5" y="50" width="44" height="20"/>
+                            <rect key="frame" x="92.5" y="50" width="43" height="20"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dTC-4P-d18">
-                                    <rect key="frame" x="5" y="0.0" width="34" height="20"/>
+                                    <rect key="frame" x="5" y="0.0" width="33" height="20"/>
                                     <fontDescription key="fontDescription" type="system" pointSize="11"/>
                                     <color key="textColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="calibratedRGB"/>
                                     <nil key="highlightedColor"/>
@@ -342,60 +342,14 @@
                     </constraints>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Z2G-Np-QOj">
-                    <rect key="frame" x="21" y="95" width="372" height="82"/>
-                    <subviews>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="member_bg" translatesAutoresizingMaskIntoConstraints="NO" id="1bH-7t-qOO">
-                            <rect key="frame" x="0.0" y="0.0" width="372" height="82"/>
-                        </imageView>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="752" translatesAutoresizingMaskIntoConstraints="NO" id="5z5-qL-E8k">
-                            <rect key="frame" x="17" y="14" width="18" height="18"/>
-                            <constraints>
-                                <constraint firstAttribute="width" constant="18" id="9WR-bC-D8Z"/>
-                                <constraint firstAttribute="height" constant="18" id="C1N-Yc-fj2"/>
-                            </constraints>
-                        </imageView>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6qT-My-OUw">
-                            <rect key="frame" x="39" y="13" width="0.0" height="20"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="20" id="DWM-cF-dEE"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
-                            <color key="textColor" red="0.49803921568627452" green="0.41960784313725491" blue="0.24705882352941178" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mmG-7j-0TH">
-                            <rect key="frame" x="282" y="10" width="74" height="26"/>
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                            <constraints>
-                                <constraint firstAttribute="width" constant="74" id="3z5-of-1Pd"/>
-                                <constraint firstAttribute="height" constant="26" id="lpy-gf-uvk"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                            <state key="normal" image="member_center"/>
-                            <connections>
-                                <action selector="toMemberDetail:" destination="iN0-l3-epB" eventType="touchUpInside" id="ZP9-R7-fAK"/>
-                            </connections>
-                        </button>
-                    </subviews>
+                    <rect key="frame" x="0.0" y="95" width="414" height="82"/>
                     <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     <constraints>
-                        <constraint firstItem="mmG-7j-0TH" firstAttribute="centerY" secondItem="6qT-My-OUw" secondAttribute="centerY" id="0Ld-nO-6mC"/>
-                        <constraint firstItem="1bH-7t-qOO" firstAttribute="leading" secondItem="Z2G-Np-QOj" secondAttribute="leading" id="4m4-tT-78p"/>
-                        <constraint firstItem="5z5-qL-E8k" firstAttribute="top" secondItem="Z2G-Np-QOj" secondAttribute="top" constant="14" id="Fnw-sO-do7"/>
-                        <constraint firstItem="mmG-7j-0TH" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="6qT-My-OUw" secondAttribute="trailing" constant="5" id="P2W-Gw-uIq"/>
                         <constraint firstAttribute="height" constant="82" id="SKi-Qq-ImA"/>
-                        <constraint firstItem="5z5-qL-E8k" firstAttribute="leading" secondItem="Z2G-Np-QOj" secondAttribute="leading" constant="17" id="Toc-JQ-yJL"/>
-                        <constraint firstAttribute="trailing" secondItem="1bH-7t-qOO" secondAttribute="trailing" id="XTN-4K-JX8"/>
-                        <constraint firstItem="1bH-7t-qOO" firstAttribute="top" secondItem="Z2G-Np-QOj" secondAttribute="top" id="Xge-VT-KfW"/>
-                        <constraint firstItem="6qT-My-OUw" firstAttribute="centerY" secondItem="5z5-qL-E8k" secondAttribute="centerY" id="bpQ-lk-9Pa"/>
-                        <constraint firstAttribute="trailing" secondItem="mmG-7j-0TH" secondAttribute="trailing" constant="16" id="hPZ-lO-ZhG"/>
-                        <constraint firstItem="6qT-My-OUw" firstAttribute="leading" secondItem="5z5-qL-E8k" secondAttribute="trailing" constant="4" id="hug-4m-7ex"/>
-                        <constraint firstAttribute="bottom" secondItem="1bH-7t-qOO" secondAttribute="bottom" id="ivR-56-GdM"/>
                     </constraints>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CM0-x0-QTu">
-                    <rect key="frame" x="12" y="140" width="390" height="80"/>
+                    <rect key="frame" x="12" y="177" width="390" height="80"/>
                     <subviews>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="A7V-1n-5kh">
                             <rect key="frame" x="0.0" y="0.0" width="130" height="80"/>
@@ -548,13 +502,13 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Qk7-Dc-xiJ">
-                    <rect key="frame" x="12" y="528" width="390" height="136"/>
+                    <rect key="frame" x="12" y="565" width="390" height="136"/>
                     <subviews>
                         <view tag="1008" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qla-Gh-0cD">
                             <rect key="frame" x="0.0" y="15" width="390" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="网络检测" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WVn-qJ-z6F">
-                                    <rect key="frame" x="15" y="14" width="65.5" height="22"/>
+                                    <rect key="frame" x="15" y="14" width="64" height="22"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="22" id="uCy-LY-6gU"/>
                                     </constraints>
@@ -583,7 +537,7 @@
                             <rect key="frame" x="0.0" y="71" width="390" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="设备检测" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iBg-aO-J2p">
-                                    <rect key="frame" x="15" y="14" width="65.5" height="22"/>
+                                    <rect key="frame" x="15" y="14" width="64" height="22"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="22" id="pib-hp-4gO"/>
                                     </constraints>
@@ -638,7 +592,7 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6Vb-ea-cCL">
-                    <rect key="frame" x="14" y="380" width="386" height="136"/>
+                    <rect key="frame" x="14" y="417" width="386" height="136"/>
                     <subviews>
                         <view tag="1006" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="p7a-wm-XFM">
                             <rect key="frame" x="0.0" y="51" width="96.5" height="80"/>
@@ -651,7 +605,7 @@
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="商品订单" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="L1W-c3-kId">
-                                    <rect key="frame" x="23.5" y="49" width="49.5" height="16"/>
+                                    <rect key="frame" x="24.5" y="49" width="48" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="fGX-1e-Y1N"/>
                                     </constraints>
@@ -683,7 +637,7 @@
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="交易记录" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Fsy-zM-cho">
-                                    <rect key="frame" x="23.5" y="49" width="49.5" height="16"/>
+                                    <rect key="frame" x="24.5" y="49" width="48" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="agi-4q-XRR"/>
                                     </constraints>
@@ -715,7 +669,7 @@
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="优惠券" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UK6-sa-jH9">
-                                    <rect key="frame" x="30" y="49" width="37" height="16"/>
+                                    <rect key="frame" x="30.5" y="49" width="36" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="WfD-9Y-oXn"/>
                                     </constraints>
@@ -747,7 +701,7 @@
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="活动奖品" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="M6z-ZK-pCe">
-                                    <rect key="frame" x="23.5" y="49" width="49.5" height="16"/>
+                                    <rect key="frame" x="24.5" y="49" width="48" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="FxY-EK-KVj"/>
                                     </constraints>
@@ -769,7 +723,7 @@
                             </connections>
                         </view>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="服务工具" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kfn-bS-Ygw">
-                            <rect key="frame" x="14" y="14" width="66" height="22"/>
+                            <rect key="frame" x="14" y="14" width="64" height="22"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="22" id="T2o-Ge-b2V"/>
                             </constraints>
@@ -807,13 +761,13 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qXK-bw-j5E">
-                    <rect key="frame" x="14" y="676" width="386" height="248"/>
+                    <rect key="frame" x="14" y="713" width="386" height="248"/>
                     <subviews>
                         <view tag="1010" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iFf-ti-ghK">
                             <rect key="frame" x="0.0" y="15" width="386" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="帮助中心" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2MM-pc-66O">
-                                    <rect key="frame" x="15" y="14" width="65.5" height="22"/>
+                                    <rect key="frame" x="15" y="14" width="64" height="22"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="22" id="ic0-Kn-p6N"/>
                                     </constraints>
@@ -842,7 +796,7 @@
                             <rect key="frame" x="0.0" y="71" width="386" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="意见反馈" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Lb-1M-OO7">
-                                    <rect key="frame" x="15" y="14" width="65.5" height="22"/>
+                                    <rect key="frame" x="15" y="14" width="64" height="22"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="22" id="7np-2u-rkH"/>
                                     </constraints>
@@ -871,7 +825,7 @@
                             <rect key="frame" x="0.0" y="127" width="386" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="联系我们" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cZ0-wT-OCD">
-                                    <rect key="frame" x="15" y="14" width="65.5" height="22"/>
+                                    <rect key="frame" x="15" y="14" width="64" height="22"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="22" id="3oA-LQ-Wxh"/>
                                     </constraints>
@@ -900,7 +854,7 @@
                             <rect key="frame" x="0.0" y="183" width="386" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="在线客服" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MMr-Ez-z1i">
-                                    <rect key="frame" x="15" y="14" width="65.5" height="22"/>
+                                    <rect key="frame" x="15" y="14" width="64" height="22"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="22" id="1ok-Jp-d6s"/>
                                     </constraints>
@@ -970,11 +924,11 @@
                 <constraint firstItem="Z2G-Np-QOj" firstAttribute="top" secondItem="4LF-Bt-r8c" secondAttribute="bottom" constant="15" id="GU6-hP-WIs"/>
                 <constraint firstAttribute="trailing" secondItem="qXK-bw-j5E" secondAttribute="trailing" constant="14" id="Lmf-J3-IbP"/>
                 <constraint firstAttribute="trailing" secondItem="4LF-Bt-r8c" secondAttribute="trailing" id="MwJ-5v-sNZ"/>
-                <constraint firstItem="CM0-x0-QTu" firstAttribute="top" secondItem="Z2G-Np-QOj" secondAttribute="centerY" constant="4" id="R5O-DO-tRR"/>
+                <constraint firstItem="CM0-x0-QTu" firstAttribute="top" secondItem="Z2G-Np-QOj" secondAttribute="bottom" id="R5O-DO-tRR"/>
                 <constraint firstItem="6Vb-ea-cCL" firstAttribute="top" secondItem="yLa-RZ-nEh" secondAttribute="bottom" constant="12" id="ay3-1C-BkA"/>
                 <constraint firstItem="qXK-bw-j5E" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="bWF-55-ywb"/>
                 <constraint firstItem="4LF-Bt-r8c" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="bax-Hn-A2W"/>
-                <constraint firstAttribute="trailing" secondItem="Z2G-Np-QOj" secondAttribute="trailing" constant="21" id="cnK-0q-uZZ"/>
+                <constraint firstAttribute="trailing" secondItem="Z2G-Np-QOj" secondAttribute="trailing" id="cnK-0q-uZZ"/>
                 <constraint firstItem="CM0-x0-QTu" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="12" id="dzZ-a7-IHc"/>
                 <constraint firstItem="qXK-bw-j5E" firstAttribute="top" secondItem="Qk7-Dc-xiJ" secondAttribute="bottom" constant="12" id="hZj-vQ-u3J"/>
                 <constraint firstAttribute="trailing" secondItem="yLa-RZ-nEh" secondAttribute="trailing" constant="12" id="j4o-S2-kbG"/>
@@ -983,7 +937,7 @@
                 <constraint firstItem="yLa-RZ-nEh" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="12" id="mak-xj-viy"/>
                 <constraint firstAttribute="trailing" secondItem="6Vb-ea-cCL" secondAttribute="trailing" constant="14" id="nT0-Ss-XAp"/>
                 <constraint firstItem="4LF-Bt-r8c" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="ryv-Rl-YzK"/>
-                <constraint firstItem="Z2G-Np-QOj" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="21" id="uM7-0I-aLo"/>
+                <constraint firstItem="Z2G-Np-QOj" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="uM7-0I-aLo"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
@@ -995,16 +949,12 @@
                 <outlet property="costomserviceViewHeight" destination="9TD-pb-bb5" id="NyB-8l-7zf"/>
                 <outlet property="finishCourseLabel" destination="lLR-pZ-jam" id="cVd-kH-5uJ"/>
                 <outlet property="followTeacherLabel" destination="gfo-ED-EEb" id="Fn2-TG-zkD"/>
-                <outlet property="memberCountLabel" destination="6qT-My-OUw" id="zH9-FK-BPX"/>
-                <outlet property="memberDescLeft" destination="hug-4m-7ex" id="9xF-rF-nae"/>
-                <outlet property="memberLogoTag" destination="5z5-qL-E8k" id="qyc-A0-RzS"/>
                 <outlet property="memberView" destination="Z2G-Np-QOj" id="NaQ-ff-30V"/>
                 <outlet property="memberViewHeight" destination="SKi-Qq-ImA" id="Uoi-Sz-DTf"/>
                 <outlet property="recordView" destination="tzR-Pz-0l8" id="qFg-sX-2Nk"/>
                 <outlet property="residueCourseLabel" destination="kXq-zC-0rd" id="48S-nZ-xUu"/>
                 <outlet property="subjectLabel" destination="dTC-4P-d18" id="im6-MY-idV"/>
                 <outlet property="subjectView" destination="NZg-rk-TQZ" id="Fzo-ku-gVU"/>
-                <outlet property="tagViewWidth" destination="9WR-bC-D8Z" id="T2e-nT-Uym"/>
                 <outlet property="ticketView" destination="ie2-Na-Fwe" id="Oiq-bn-8Iz"/>
                 <outlet property="userAvatar" destination="0Xj-Pq-GsW" id="HFE-tF-Mjw"/>
                 <outlet property="userIdLabel" destination="yim-3c-rJe" id="SSw-wm-kIL"/>
@@ -1106,8 +1056,6 @@
     </objects>
     <resources>
         <image name="activity_award" width="42" height="42"/>
-        <image name="member_bg" width="176.5" height="82"/>
-        <image name="member_center" width="74" height="26"/>
         <image name="mine_course" width="33" height="33"/>
         <image name="mine_goodsOrder" width="42" height="42"/>
         <image name="mine_homework" width="33" height="33"/>