Sfoglia il codice sorgente

学生端个人中心改造

Steven 2 anni fa
parent
commit
d86853e06b
54 ha cambiato i file con 1495 aggiunte e 350 eliminazioni
  1. 2 2
      KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj
  2. BIN
      KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  3. 0 22
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_bg.imageset/Contents.json
  4. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_bg.imageset/member_bg@2x.png
  5. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_bg.imageset/member_bg@3x.png
  6. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_center.imageset/member_center@2x.png
  7. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_center.imageset/member_center@3x.png
  8. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_logo.imageset/member_logo@2x.png
  9. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_logo.imageset/member_logo@3x.png
  10. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_course.imageset/mine_course@2x.png
  11. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_course.imageset/mine_course@3x.png
  12. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_goodsOrder.imageset/Contents.json
  13. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_goodsOrder.imageset/mine_goodsOrder@2x.png
  14. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_goodsOrder.imageset/mine_goodsOrder@3x.png
  15. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_homework.imageset/mine_homework@2x.png
  16. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_homework.imageset/mine_homework@3x.png
  17. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_judgeRecord.imageset/mine_judgeRecord@2x.png
  18. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_judgeRecord.imageset/mine_judgeRecord@3x.png
  19. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_music.imageset/mine_music@2x.png
  20. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_music.imageset/mine_music@3x.png
  21. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_navBg.imageset/mine_navBg@2x.png
  22. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_navBg.imageset/mine_navBg@3x.png
  23. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_next.imageset/mine_next@2x.png
  24. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_next.imageset/mine_next@3x.png
  25. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_ticket.imageset/Contents.json
  26. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_ticket.imageset/mine_ticket@2x.png
  27. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_ticket.imageset/mine_ticket@3x.png
  28. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_trainRecord.imageset/Contents.json
  29. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_trainRecord.imageset/mine_trainRecord@2x.png
  30. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_trainRecord.imageset/mine_trainRecord@3x.png
  31. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_uid.imageset/mine_uid@2x.png
  32. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_uid.imageset/mine_uid@3x.png
  33. 14 5
      KulexiuForStudent/KulexiuForStudent/Base.lproj/Main.storyboard
  34. 14 14
      KulexiuForStudent/KulexiuForStudent/Common/Define/PrefixHeader.pch
  35. 8 1
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Controller/MineViewController.m
  36. 45 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineActionView.h
  37. 52 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineActionView.m
  38. 62 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineActionView.xib
  39. 2 2
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.h
  40. 1 9
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.m
  41. 371 288
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.xib
  42. 16 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBottomView.h
  43. 20 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBottomView.m
  44. 22 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBottomView.xib
  45. 16 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineHeadView.h
  46. 20 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineHeadView.m
  47. 335 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineHeadView.xib
  48. 38 7
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineNavView.xib
  49. 27 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineServiceView.h
  50. 103 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineServiceView.m
  51. 73 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineServiceView.xib
  52. 25 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineStudyView.h
  53. 90 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineStudyView.m
  54. 73 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineStudyView.xib

+ 2 - 2
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -7266,7 +7266,7 @@
 					"$(PROJECT_DIR)/KulexiuForStudent/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.5/SocialLibraries/Sina/SinaSDK",
 					"$(PROJECT_DIR)/KulexiuForStudent/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.5/UMSocialSDKPlugin",
 				);
-				MARKETING_VERSION = 1.3.4;
+				MARKETING_VERSION = 1.3.3;
 				PRODUCT_BUNDLE_IDENTIFIER = com.Colexiu.KulexiuForStudent;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_EMIT_LOC_STRINGS = YES;
@@ -7338,7 +7338,7 @@
 					"$(PROJECT_DIR)/KulexiuForStudent/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.5/SocialLibraries/Sina/SinaSDK",
 					"$(PROJECT_DIR)/KulexiuForStudent/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.5/UMSocialSDKPlugin",
 				);
-				MARKETING_VERSION = 1.3.4;
+				MARKETING_VERSION = 1.3.3;
 				PRODUCT_BUNDLE_IDENTIFIER = com.Colexiu.KulexiuForStudent;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_EMIT_LOC_STRINGS = YES;

BIN
KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate


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

@@ -7,33 +7,11 @@
     {
       "filename" : "member_bg@2x.png",
       "idiom" : "universal",
-      "resizing" : {
-        "cap-insets" : {
-          "left" : 32,
-          "right" : 317
-        },
-        "center" : {
-          "mode" : "tile",
-          "width" : 1
-        },
-        "mode" : "3-part-horizontal"
-      },
       "scale" : "2x"
     },
     {
       "filename" : "member_bg@3x.png",
       "idiom" : "universal",
-      "resizing" : {
-        "cap-insets" : {
-          "left" : 48,
-          "right" : 476
-        },
-        "center" : {
-          "mode" : "tile",
-          "width" : 1
-        },
-        "mode" : "3-part-horizontal"
-      },
       "scale" : "3x"
     }
   ],

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_bg.imageset/member_bg@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_bg.imageset/member_bg@3x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_center.imageset/member_center@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_center.imageset/member_center@3x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_logo.imageset/member_logo@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/member_logo.imageset/member_logo@3x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_course.imageset/mine_course@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_course.imageset/mine_course@3x.png


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

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_goodsOrder.imageset/mine_goodsOrder@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_goodsOrder.imageset/mine_goodsOrder@3x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_homework.imageset/mine_homework@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_homework.imageset/mine_homework@3x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_judgeRecord.imageset/mine_judgeRecord@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_judgeRecord.imageset/mine_judgeRecord@3x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_music.imageset/mine_music@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_music.imageset/mine_music@3x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_navBg.imageset/mine_navBg@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_navBg.imageset/mine_navBg@3x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_next.imageset/mine_next@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_next.imageset/mine_next@3x.png


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

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_ticket.imageset/mine_ticket@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_ticket.imageset/mine_ticket@3x.png


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

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_trainRecord.imageset/mine_trainRecord@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_trainRecord.imageset/mine_trainRecord@3x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_uid.imageset/mine_uid@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_uid.imageset/mine_uid@3x.png


+ 14 - 5
KulexiuForStudent/KulexiuForStudent/Base.lproj/Main.storyboard

@@ -1,24 +1,33 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
         <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>
     <scenes>
         <!--View Controller-->
         <scene sceneID="tne-QT-ifu">
             <objects>
-                <viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController">
+                <viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
                     <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
                         <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                     </view>
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
             </objects>
+            <point key="canvasLocation" x="62" y="56"/>
         </scene>
     </scenes>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
 </document>

+ 14 - 14
KulexiuForStudent/KulexiuForStudent/Common/Define/PrefixHeader.pch

@@ -117,24 +117,24 @@ shouldPrevent = NO; \
 
 //#ifdef DEBUG
 
-//#define hostURL (@"https://dev.colexiu.com")
-//#define SEALCLASSHOST (@"https://dev.colexiu.com/api-classroom")
-//#define WEBHOST (@"https://dev.colexiu.com/student")
-//#define SOCKET_URL (@"wss://dev.colexiu.com/audioAnalysis")
-//#define JSPUSH_ENVIRONMENT (NO)
-//#define RCIM_KEY (@"0vnjpoad0jbdz")
-//#define SUBMIT_UUID (YES)
+#define hostURL (@"https://dev.colexiu.com")
+#define SEALCLASSHOST (@"https://dev.colexiu.com/api-classroom")
+#define WEBHOST (@"https://dev.colexiu.com/student")
+#define SOCKET_URL (@"wss://dev.colexiu.com/audioAnalysis")
+#define JSPUSH_ENVIRONMENT (NO)
+#define RCIM_KEY (@"0vnjpoad0jbdz")
+#define SUBMIT_UUID (YES)
 
 
 //#else
 
-#define hostURL (@"https://online.colexiu.com")
-#define SEALCLASSHOST (@"https://online.colexiu.com/api-classroom")
-#define WEBHOST (@"https://online.colexiu.com/student")
-#define SOCKET_URL (@"wss://online.colexiu.com/audioAnalysis")
-#define JSPUSH_ENVIRONMENT (YES)
-#define RCIM_KEY (@"e5t4ouvpe42pa")
-#define SUBMIT_UUID (YES)
+//#define hostURL (@"https://online.colexiu.com")
+//#define SEALCLASSHOST (@"https://online.colexiu.com/api-classroom")
+//#define WEBHOST (@"https://online.colexiu.com/student")
+//#define SOCKET_URL (@"wss://online.colexiu.com/audioAnalysis")
+//#define JSPUSH_ENVIRONMENT (YES)
+//#define RCIM_KEY (@"e5t4ouvpe42pa")
+//#define SUBMIT_UUID (YES)
 
 //#endif
 

+ 8 - 1
KulexiuForStudent/KulexiuForStudent/Module/Mine/Controller/MineViewController.m

@@ -58,7 +58,7 @@
     [self.view bringSubviewToFront:self.scrollView];
     [self.view bringSubviewToFront:self.navView];
     [self.navView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.width.mas_equalTo(100);
+        make.width.mas_equalTo(KPortraitWidth);
         make.right.top.mas_equalTo(self.view);
         make.height.mas_equalTo(kNaviBarHeight);
     }];
@@ -239,6 +239,13 @@
             [self.navigationController pushViewController:ctrl animated:YES];
         }
             break;
+        case MINEVIEWTYPE_TICKET:
+        {
+            KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
+            webCtrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/teacherFollow"];
+            [self.navigationController pushViewController:webCtrl animated:YES];
+        }
+            break;
         default:
             break;
     }

+ 45 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineActionView.h

@@ -0,0 +1,45 @@
+//
+//  MineActionView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/8/8.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef NS_ENUM(NSInteger, MINEVIEWTYPE) {
+    MINEVIEWTYPE_MEMBER = 1001,
+    MINEVIEWTYPE_COURSE,
+    MINEVIEWTYPE_HOMEWORK,
+    MINEVIEWTYPE_MUSIC,
+    MINEVIEWTYPE_RECORD,
+    MINEVIEWTYPE_ORDER,
+    MINEVIEWTYPE_DEAL,
+    MINEVIEWTYPE_NETWORK,
+    MINEVIEWTYPE_DEVICE,
+    MINEVIEWTYPE_HELP,
+    MINEVIEWTYPE_FINISHCOURSE, // 已完成课程
+    MINEVIEWTYPE_UNFINISHCOURSE, // 未完成课程
+    MINEVIEWTYPE_FOLLOW, // 我的关注
+    MINEVIEWTYPE_USER,
+    MINEVIEWTYPE_FEEDBACK, // 反馈
+    MINEVIEWTYPE_TICKET
+};
+
+#define FUNCTIONVIEW_WIDTH (80)
+#define FUNCTIONVIEW_HEIGHT (80)
+
+typedef void(^MineViewCallback)(MINEVIEWTYPE type);
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MineActionView : UIView
+
++ (instancetype)shareInstance;
+
+- (void)configWithSource:(NSString *)imageName title:(NSString *)buttonTitle functionType:(MINEVIEWTYPE)type callback:(MineViewCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 52 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineActionView.m

@@ -0,0 +1,52 @@
+//
+//  MineActionView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/8/8.
+//
+
+#import "MineActionView.h"
+
+@interface MineActionView ()
+
+@property (weak, nonatomic) IBOutlet UIImageView *functionImageView;
+
+@property (weak, nonatomic) IBOutlet UILabel *functionTitle;
+
+@property (nonatomic, assign) MINEVIEWTYPE type;
+
+@property (nonatomic, copy) MineViewCallback callback;
+
+@end
+
+@implementation MineActionView
+
++ (instancetype)shareInstance {
+    MineActionView *view = [[[NSBundle mainBundle] loadNibNamed:@"MineActionView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)configWithSource:(NSString *)imageName title:(NSString *)buttonTitle functionType:(MINEVIEWTYPE)type callback:(MineViewCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+    [self.functionImageView setImage:[UIImage imageNamed:imageName]];
+    [self.functionTitle setText:buttonTitle];
+    self.type = type;
+}
+
+- (IBAction)functionAction:(id)sender {
+    if (self.callback) {
+        self.callback(self.type);
+    }
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 62 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineActionView.xib

@@ -0,0 +1,62 @@
+<?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">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <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="MineActionView">
+            <rect key="frame" x="0.0" y="0.0" width="80" height="80"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="rgU-Ad-ttb">
+                    <rect key="frame" x="20" y="10" width="40" height="40"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="40" id="1Mc-H5-fOL"/>
+                        <constraint firstAttribute="width" constant="40" id="upq-Bx-Sia"/>
+                    </constraints>
+                </imageView>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="陪练课设置" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Hm-Gs-bFT">
+                    <rect key="frame" x="4" y="52" width="72" height="18"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="18" id="X9D-MS-Pox"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Kui-vi-ON1">
+                    <rect key="frame" x="0.0" y="10" width="80" height="60"/>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <connections>
+                        <action selector="functionAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="LBg-GX-nfb"/>
+                    </connections>
+                </button>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="Kui-vi-ON1" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="6wv-rS-Oly"/>
+                <constraint firstItem="5Hm-Gs-bFT" firstAttribute="top" secondItem="rgU-Ad-ttb" secondAttribute="bottom" constant="2" id="8JI-tM-Vx7"/>
+                <constraint firstItem="5Hm-Gs-bFT" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="4" id="AL3-eq-PFa"/>
+                <constraint firstAttribute="trailing" secondItem="Kui-vi-ON1" secondAttribute="trailing" id="Hgm-XB-i3N"/>
+                <constraint firstItem="rgU-Ad-ttb" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="U7T-ff-7fV"/>
+                <constraint firstAttribute="trailing" secondItem="5Hm-Gs-bFT" secondAttribute="trailing" constant="4" id="VUb-hi-3pl"/>
+                <constraint firstItem="rgU-Ad-ttb" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="q6X-vg-l7z"/>
+                <constraint firstItem="rgU-Ad-ttb" firstAttribute="top" secondItem="Kui-vi-ON1" secondAttribute="top" id="uOs-Ou-hDh"/>
+                <constraint firstItem="5Hm-Gs-bFT" firstAttribute="bottom" secondItem="Kui-vi-ON1" secondAttribute="bottom" id="zHO-fE-hfH"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="functionImageView" destination="rgU-Ad-ttb" id="Pi0-zj-vsa"/>
+                <outlet property="functionTitle" destination="5Hm-Gs-bFT" id="L8P-8f-NoR"/>
+            </connections>
+            <point key="canvasLocation" x="112.31884057971016" y="11.383928571428571"/>
+        </view>
+    </objects>
+</document>

+ 2 - 2
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.h

@@ -23,8 +23,8 @@ typedef NS_ENUM(NSInteger, MINEVIEWTYPE) {
     MINEVIEWTYPE_UNFINISHCOURSE, // 未完成课程
     MINEVIEWTYPE_FOLLOW, // 我的关注
     MINEVIEWTYPE_USER,
-    MINEVIEWTYPE_FEEDBACK // 反馈
-
+    MINEVIEWTYPE_FEEDBACK, // 反馈
+    MINEVIEWTYPE_TICKET
 };
 typedef void(^MineViewCallback)(MINEVIEWTYPE type);
 

+ 1 - 9
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.m

@@ -23,10 +23,6 @@
 
 @property (weak, nonatomic) IBOutlet UILabel *followTeacherLabel;
 
-@property (weak, nonatomic) IBOutlet UIView *dealView;
-
-@property (weak, nonatomic) IBOutlet NSLayoutConstraint *dealViewHeight;
-
 @property (weak, nonatomic) IBOutlet UIImageView *userAvatar;
 
 @property (weak, nonatomic) IBOutlet UILabel *userName;
@@ -115,7 +111,7 @@
 }
 
 - (CGFloat)getViewHeight {
-    return 80 + 15 + (self.memberViewHeight.constant) / 2 + 10 + 100 + 12 + 93 + 15 + 270 + self.dealViewHeight.constant;
+    return 80 + 15 + (self.memberViewHeight.constant) / 2 + 10 + 80 + 12 + (136 + 12) * 4;
 }
 
 - (IBAction)modifyUser:(id)sender {
@@ -129,14 +125,10 @@
     if (_isMember) {
         self.memberViewHeight.constant = 82.0f;
         self.memberView.hidden = NO;
-        self.dealView.hidden = NO;
-        self.dealViewHeight.constant = 50.0f;
     }
     else {
         self.memberViewHeight.constant = 0.0f;
         self.memberView.hidden = YES;
-        self.dealView.hidden = YES;
-        self.dealViewHeight.constant = 0.0f;
     }
 }
 

File diff suppressed because it is too large
+ 371 - 288
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.xib


+ 16 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBottomView.h

@@ -0,0 +1,16 @@
+//
+//  MineBottomView.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/9/5.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MineBottomView : UIView
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 20 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBottomView.m

@@ -0,0 +1,20 @@
+//
+//  MineBottomView.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/9/5.
+//
+
+#import "MineBottomView.h"
+
+@implementation MineBottomView
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBottomView.xib

@@ -0,0 +1,22 @@
+<?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">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <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="MineBottomView">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="302"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="131.8840579710145" y="22.098214285714285"/>
+        </view>
+    </objects>
+</document>

+ 16 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineHeadView.h

@@ -0,0 +1,16 @@
+//
+//  MineHeadView.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/9/5.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MineHeadView : UIView
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 20 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineHeadView.m

@@ -0,0 +1,20 @@
+//
+//  MineHeadView.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/9/5.
+//
+
+#import "MineHeadView.h"
+
+@implementation MineHeadView
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 335 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineHeadView.xib

@@ -0,0 +1,335 @@
+<?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">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <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="MineHeadView">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="226"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kpf-WV-Qnh">
+                    <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="eVI-a4-QAM">
+                            <rect key="frame" x="28" y="14" width="102" height="28"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="28" id="7if-5n-lne"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/>
+                            <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="MvC-vf-Pgt">
+                            <rect key="frame" x="28" y="50" width="63" height="20"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_uid" translatesAutoresizingMaskIntoConstraints="NO" id="uSV-l2-ddH">
+                                    <rect key="frame" x="6" y="4.5" width="11" height="11"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="11" id="mHI-kK-EXD"/>
+                                        <constraint firstAttribute="width" constant="11" id="wTS-KD-Eal"/>
+                                    </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="Ove-mn-2Ce">
+                                    <rect key="frame" x="23" y="3" width="34" height="14"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="11"/>
+                                    <color key="textColor" red="0.41568627450000001" green="0.41568627450000001" blue="0.41568627450000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                            <constraints>
+                                <constraint firstItem="Ove-mn-2Ce" firstAttribute="centerY" secondItem="uSV-l2-ddH" secondAttribute="centerY" id="7nO-ic-GZA"/>
+                                <constraint firstItem="Ove-mn-2Ce" firstAttribute="leading" secondItem="uSV-l2-ddH" secondAttribute="trailing" constant="6" id="AcQ-Nt-9j6"/>
+                                <constraint firstItem="uSV-l2-ddH" firstAttribute="leading" secondItem="MvC-vf-Pgt" secondAttribute="leading" constant="6" id="Kn5-2k-M1V"/>
+                                <constraint firstItem="uSV-l2-ddH" firstAttribute="centerY" secondItem="MvC-vf-Pgt" secondAttribute="centerY" id="Ldi-2S-ApV"/>
+                                <constraint firstAttribute="trailing" secondItem="Ove-mn-2Ce" secondAttribute="trailing" constant="6" id="dIr-8w-gxe"/>
+                                <constraint firstAttribute="height" constant="20" id="eyU-ed-DhE"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="10"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="jwU-o5-k6U">
+                            <rect key="frame" x="334" y="14" width="52" height="52"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                        </button>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PT7-c8-soH">
+                            <rect key="frame" x="99" y="50" width="44" 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="DAF-rx-WJS">
+                                    <rect key="frame" x="5" y="0.0" width="34" height="20"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="11"/>
+                                    <color key="textColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" red="0.93725490199999995" green="0.98431372549999996" blue="0.97647058819999999" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="DAF-rx-WJS" secondAttribute="trailing" constant="5" id="Nsg-gN-rI8"/>
+                                <constraint firstItem="DAF-rx-WJS" firstAttribute="leading" secondItem="PT7-c8-soH" secondAttribute="leading" constant="5" id="d7J-8U-JZ9"/>
+                                <constraint firstAttribute="bottom" secondItem="DAF-rx-WJS" secondAttribute="bottom" id="sBU-de-uBG"/>
+                                <constraint firstAttribute="height" constant="20" id="wPU-ya-py5"/>
+                                <constraint firstItem="DAF-rx-WJS" firstAttribute="top" secondItem="PT7-c8-soH" secondAttribute="top" id="wiT-iG-yOg"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="4"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_default_avatal" translatesAutoresizingMaskIntoConstraints="NO" id="0MZ-Ux-vHC">
+                            <rect key="frame" x="334" y="14" width="52" height="52"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="52" id="OrU-rp-9bS"/>
+                                <constraint firstAttribute="height" constant="52" id="vwi-ur-f92"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="26"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </imageView>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <gestureRecognizers/>
+                    <constraints>
+                        <constraint firstItem="eVI-a4-QAM" firstAttribute="top" secondItem="Kpf-WV-Qnh" secondAttribute="top" constant="14" id="2tM-lL-0k1"/>
+                        <constraint firstItem="jwU-o5-k6U" firstAttribute="trailing" secondItem="0MZ-Ux-vHC" secondAttribute="trailing" id="6KG-Xv-6VA"/>
+                        <constraint firstItem="MvC-vf-Pgt" firstAttribute="leading" secondItem="eVI-a4-QAM" secondAttribute="leading" id="9HG-wn-SEm"/>
+                        <constraint firstAttribute="trailing" secondItem="0MZ-Ux-vHC" secondAttribute="trailing" constant="28" id="B52-5r-VSf"/>
+                        <constraint firstAttribute="height" constant="80" id="J8G-5b-gB0"/>
+                        <constraint firstItem="PT7-c8-soH" firstAttribute="leading" secondItem="MvC-vf-Pgt" secondAttribute="trailing" constant="8" id="XJZ-HG-hVE"/>
+                        <constraint firstItem="jwU-o5-k6U" firstAttribute="bottom" secondItem="0MZ-Ux-vHC" secondAttribute="bottom" id="ZxE-KJ-C2s"/>
+                        <constraint firstItem="0MZ-Ux-vHC" firstAttribute="centerY" secondItem="Kpf-WV-Qnh" secondAttribute="centerY" id="epk-O1-a0I"/>
+                        <constraint firstItem="jwU-o5-k6U" firstAttribute="top" secondItem="0MZ-Ux-vHC" secondAttribute="top" id="fA7-6e-9CH"/>
+                        <constraint firstItem="PT7-c8-soH" firstAttribute="centerY" secondItem="MvC-vf-Pgt" secondAttribute="centerY" id="hEE-ju-7jU"/>
+                        <constraint firstItem="jwU-o5-k6U" firstAttribute="leading" secondItem="0MZ-Ux-vHC" secondAttribute="leading" id="if7-4f-kEy"/>
+                        <constraint firstItem="eVI-a4-QAM" firstAttribute="leading" secondItem="Kpf-WV-Qnh" secondAttribute="leading" constant="28" id="vcg-n5-Pj5"/>
+                        <constraint firstItem="MvC-vf-Pgt" firstAttribute="top" secondItem="eVI-a4-QAM" secondAttribute="bottom" constant="8" id="wJa-f6-RR0"/>
+                    </constraints>
+                </view>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wBU-9t-xgS">
+                    <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="rI9-Ab-Ijz">
+                            <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" image="member_logo" translatesAutoresizingMaskIntoConstraints="NO" id="ZRZ-Ee-Gj7">
+                            <rect key="frame" x="20" y="18" width="19" height="18"/>
+                        </imageView>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="会员有效期剩余xx天" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3R3-rx-wXa">
+                            <rect key="frame" x="47" y="18.5" width="129" height="17"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <color key="textColor" red="0.49803921569999998" green="0.41960784309999999" blue="0.2470588235" alpha="1" colorSpace="calibratedRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gVd-0N-HBC">
+                            <rect key="frame" x="282" y="14" width="74" height="26"/>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="74" id="fkJ-Zp-thH"/>
+                                <constraint firstAttribute="height" constant="26" id="xFn-Vm-umm"/>
+                            </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"/>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="ZRZ-Ee-Gj7" firstAttribute="top" secondItem="wBU-9t-xgS" secondAttribute="top" constant="18" id="1dT-I0-UoO"/>
+                        <constraint firstAttribute="trailing" secondItem="rI9-Ab-Ijz" secondAttribute="trailing" id="Bc2-5R-5GU"/>
+                        <constraint firstItem="gVd-0N-HBC" firstAttribute="centerY" secondItem="3R3-rx-wXa" secondAttribute="centerY" id="ERI-Dg-E0R"/>
+                        <constraint firstItem="rI9-Ab-Ijz" firstAttribute="top" secondItem="wBU-9t-xgS" secondAttribute="top" id="Lm5-VL-zCv"/>
+                        <constraint firstAttribute="trailing" secondItem="gVd-0N-HBC" secondAttribute="trailing" constant="16" id="aCA-oc-1pd"/>
+                        <constraint firstAttribute="height" constant="82" id="agG-5F-Kcd"/>
+                        <constraint firstItem="ZRZ-Ee-Gj7" firstAttribute="leading" secondItem="wBU-9t-xgS" secondAttribute="leading" constant="20" id="dSq-bc-cuD"/>
+                        <constraint firstItem="3R3-rx-wXa" firstAttribute="leading" secondItem="ZRZ-Ee-Gj7" secondAttribute="trailing" constant="8" id="ecQ-GE-ke3"/>
+                        <constraint firstAttribute="bottom" secondItem="rI9-Ab-Ijz" secondAttribute="bottom" id="i5K-Sc-0cm"/>
+                        <constraint firstItem="rI9-Ab-Ijz" firstAttribute="leading" secondItem="wBU-9t-xgS" secondAttribute="leading" id="rN3-bW-Z3G"/>
+                        <constraint firstItem="3R3-rx-wXa" firstAttribute="centerY" secondItem="ZRZ-Ee-Gj7" secondAttribute="centerY" id="yoP-S5-wSR"/>
+                    </constraints>
+                </view>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="deO-dC-vEa">
+                    <rect key="frame" x="12" y="146" width="390" height="80"/>
+                    <subviews>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="a7K-QV-7UT">
+                            <rect key="frame" x="0.0" y="0.0" width="130" height="80"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1234" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d1x-x0-2Fh">
+                                    <rect key="frame" x="0.0" y="14" width="130" height="26"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="26" id="LtE-YD-Qde"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" name="DINAlternate-Bold" family="DIN Alternate" pointSize="22"/>
+                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" 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="mcA-OT-HaN">
+                                    <rect key="frame" x="0.0" y="41" width="130" height="28"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="28" id="oVp-i2-rM1"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstItem="d1x-x0-2Fh" firstAttribute="leading" secondItem="a7K-QV-7UT" secondAttribute="leading" id="1Al-TT-yi5"/>
+                                <constraint firstAttribute="trailing" secondItem="mcA-OT-HaN" secondAttribute="trailing" id="Iuo-oc-kCj"/>
+                                <constraint firstItem="mcA-OT-HaN" firstAttribute="leading" secondItem="a7K-QV-7UT" secondAttribute="leading" id="QU4-u0-y7s"/>
+                                <constraint firstItem="d1x-x0-2Fh" firstAttribute="bottom" secondItem="a7K-QV-7UT" secondAttribute="centerY" id="aI4-Ea-UVI"/>
+                                <constraint firstItem="d1x-x0-2Fh" firstAttribute="centerX" secondItem="a7K-QV-7UT" secondAttribute="centerX" id="c7w-YC-2Ry"/>
+                                <constraint firstAttribute="trailing" secondItem="d1x-x0-2Fh" secondAttribute="trailing" id="jRx-Lp-yUb"/>
+                                <constraint firstItem="mcA-OT-HaN" firstAttribute="top" secondItem="d1x-x0-2Fh" secondAttribute="bottom" constant="1" id="o19-Ud-gLz"/>
+                            </constraints>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="28X-W2-uv0">
+                            <rect key="frame" x="260" y="0.0" width="130" height="80"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="222" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8ic-2l-Ctb">
+                                    <rect key="frame" x="0.0" y="14" width="130" height="26"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="26" id="osy-LF-4Jg"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" name="DINAlternate-Bold" family="DIN Alternate" pointSize="22"/>
+                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" 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="2kn-VW-VAa">
+                                    <rect key="frame" x="0.0" y="41" width="130" height="28"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="28" id="Bwk-Xm-CHU"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstItem="2kn-VW-VAa" firstAttribute="leading" secondItem="28X-W2-uv0" secondAttribute="leading" id="5fN-JA-RSg"/>
+                                <constraint firstAttribute="trailing" secondItem="8ic-2l-Ctb" secondAttribute="trailing" id="EVC-Om-Emh"/>
+                                <constraint firstItem="8ic-2l-Ctb" firstAttribute="bottom" secondItem="28X-W2-uv0" secondAttribute="centerY" id="QT4-Iw-Ghb"/>
+                                <constraint firstItem="8ic-2l-Ctb" firstAttribute="leading" secondItem="28X-W2-uv0" secondAttribute="leading" id="dxm-tp-36y"/>
+                                <constraint firstItem="2kn-VW-VAa" firstAttribute="top" secondItem="8ic-2l-Ctb" secondAttribute="bottom" constant="1" id="ht6-DO-Loe"/>
+                                <constraint firstAttribute="trailing" secondItem="2kn-VW-VAa" secondAttribute="trailing" id="pmE-4G-1vN"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="12"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1s8-fV-vZq">
+                            <rect key="frame" x="130" y="0.0" width="130" height="80"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="222" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="chP-yb-pgZ">
+                                    <rect key="frame" x="0.0" y="14" width="130" height="26"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="26" id="0eU-cQ-1HT"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" name="DINAlternate-Bold" family="DIN Alternate" pointSize="22"/>
+                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" 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="CKk-yB-HRh">
+                                    <rect key="frame" x="0.0" y="41" width="130" height="28"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="28" id="UzC-Tj-tYr"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="CKk-yB-HRh" secondAttribute="trailing" id="YrS-Wv-ZLg"/>
+                                <constraint firstItem="CKk-yB-HRh" firstAttribute="top" secondItem="chP-yb-pgZ" secondAttribute="bottom" constant="1" id="ZJ6-fb-GhF"/>
+                                <constraint firstItem="CKk-yB-HRh" firstAttribute="leading" secondItem="1s8-fV-vZq" secondAttribute="leading" id="dUi-if-NBk"/>
+                                <constraint firstItem="chP-yb-pgZ" firstAttribute="leading" secondItem="1s8-fV-vZq" secondAttribute="leading" id="dcq-Fz-54C"/>
+                                <constraint firstItem="chP-yb-pgZ" firstAttribute="bottom" secondItem="1s8-fV-vZq" secondAttribute="centerY" id="lqP-lU-kos"/>
+                                <constraint firstAttribute="trailing" secondItem="chP-yb-pgZ" secondAttribute="trailing" id="qfP-XB-Bb2"/>
+                            </constraints>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="28X-W2-uv0" firstAttribute="top" secondItem="deO-dC-vEa" secondAttribute="top" id="3Qg-gr-GFl"/>
+                        <constraint firstAttribute="bottom" secondItem="1s8-fV-vZq" secondAttribute="bottom" id="CNe-Gk-7Nn"/>
+                        <constraint firstItem="1s8-fV-vZq" firstAttribute="width" secondItem="a7K-QV-7UT" secondAttribute="width" id="CaX-O3-kIj"/>
+                        <constraint firstAttribute="bottom" secondItem="a7K-QV-7UT" secondAttribute="bottom" id="ESk-1f-WWU"/>
+                        <constraint firstAttribute="bottom" secondItem="28X-W2-uv0" secondAttribute="bottom" id="M1B-ZJ-hqa"/>
+                        <constraint firstItem="a7K-QV-7UT" firstAttribute="leading" secondItem="deO-dC-vEa" secondAttribute="leading" id="hIS-TW-Kc2"/>
+                        <constraint firstItem="28X-W2-uv0" firstAttribute="width" secondItem="a7K-QV-7UT" secondAttribute="width" id="m2c-Qs-hAW"/>
+                        <constraint firstAttribute="trailing" secondItem="28X-W2-uv0" secondAttribute="trailing" id="mVG-fw-Z4s"/>
+                        <constraint firstItem="a7K-QV-7UT" firstAttribute="top" secondItem="deO-dC-vEa" secondAttribute="top" id="oIW-Q3-zPD"/>
+                        <constraint firstAttribute="height" constant="80" id="ppU-n7-KJS"/>
+                        <constraint firstItem="1s8-fV-vZq" firstAttribute="top" secondItem="deO-dC-vEa" secondAttribute="top" id="qPa-BZ-yAx"/>
+                        <constraint firstItem="28X-W2-uv0" firstAttribute="leading" secondItem="1s8-fV-vZq" secondAttribute="trailing" id="uYL-dd-9yi"/>
+                        <constraint firstItem="1s8-fV-vZq" firstAttribute="leading" secondItem="a7K-QV-7UT" secondAttribute="trailing" id="ww1-Y6-mZ3"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="8"/>
+                        </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="color" keyPath="shadowUIColor">
+                            <color key="value" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="YES"/>
+                    </userDefinedRuntimeAttributes>
+                </view>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="deO-dC-vEa" secondAttribute="trailing" constant="12" id="4iT-cR-Yog"/>
+                <constraint firstItem="wBU-9t-xgS" firstAttribute="top" secondItem="Kpf-WV-Qnh" secondAttribute="bottom" constant="15" id="FcN-l0-DGc"/>
+                <constraint firstItem="wBU-9t-xgS" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="21" id="Kzh-xI-7Uh"/>
+                <constraint firstItem="deO-dC-vEa" firstAttribute="top" secondItem="wBU-9t-xgS" secondAttribute="centerY" constant="10" id="ZFM-hv-Dd7"/>
+                <constraint firstAttribute="trailing" secondItem="wBU-9t-xgS" secondAttribute="trailing" constant="21" id="ZU6-Un-VVu"/>
+                <constraint firstItem="deO-dC-vEa" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="12" id="djo-Hf-KNY"/>
+                <constraint firstItem="Kpf-WV-Qnh" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="klK-IP-RgZ"/>
+                <constraint firstAttribute="trailing" secondItem="Kpf-WV-Qnh" secondAttribute="trailing" id="mfn-ad-cPT"/>
+                <constraint firstItem="Kpf-WV-Qnh" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="xXw-rP-hka"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="131.8840579710145" y="-220.64732142857142"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="member_bg" width="334" height="82"/>
+        <image name="member_center" width="74" height="26"/>
+        <image name="member_logo" width="19" height="18"/>
+        <image name="mine_uid" width="11" height="11"/>
+        <image name="user_default_avatal" width="52" height="52"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 38 - 7
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineNavView.xib

@@ -10,11 +10,11 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="MineNavView">
-            <rect key="frame" x="0.0" y="0.0" width="100" height="87"/>
+            <rect key="frame" x="0.0" y="0.0" width="414" height="88"/>
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="o7c-br-wf5">
-                    <rect key="frame" x="50" y="47" width="40" height="40"/>
+                    <rect key="frame" x="366" y="48" width="40" height="40"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="40" id="He1-cX-k8M"/>
                         <constraint firstAttribute="width" constant="40" id="S21-d9-pEr"/>
@@ -26,7 +26,7 @@
                     </connections>
                 </button>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="EJV-LH-t1s">
-                    <rect key="frame" x="5" y="47" width="40" height="40"/>
+                    <rect key="frame" x="322" y="48" width="40" height="40"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="40" id="deq-GW-hFW"/>
                         <constraint firstAttribute="width" constant="40" id="hPx-qs-89D"/>
@@ -37,18 +37,49 @@
                         <action selector="scanAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="Ta1-5B-OCv"/>
                     </connections>
                 </button>
+                <view alpha="0.10000000000000001" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Rhc-fA-XQh">
+                    <rect key="frame" x="15" y="63" width="88" height="10"/>
+                    <color key="backgroundColor" red="0.18823529411764706" green="0.7803921568627451" blue="0.6705882352941176" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="88" id="Wfo-b0-Mgl"/>
+                        <constraint firstAttribute="height" constant="10" id="xeq-13-RVn"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="5"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CENTER" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vVv-Q5-Hup">
+                    <rect key="frame" x="61" y="62.5" width="38" height="11"/>
+                    <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="9"/>
+                    <color key="textColor" red="0.18823529411764706" green="0.7803921568627451" blue="0.6705882352941176" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
+                    <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="vgD-P2-w5R">
+                    <rect key="frame" x="18" y="56" width="41" height="24"/>
+                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/>
+                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
             </subviews>
-            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
-                <constraint firstAttribute="trailing" secondItem="o7c-br-wf5" secondAttribute="trailing" constant="10" id="Kng-m2-QZf"/>
+                <constraint firstItem="Rhc-fA-XQh" firstAttribute="centerY" secondItem="vgD-P2-w5R" secondAttribute="centerY" id="GVr-fJ-FGt"/>
+                <constraint firstAttribute="trailing" secondItem="o7c-br-wf5" secondAttribute="trailing" constant="8" id="Kng-m2-QZf"/>
                 <constraint firstItem="o7c-br-wf5" firstAttribute="centerY" secondItem="EJV-LH-t1s" secondAttribute="centerY" id="Oo2-s1-fZ6"/>
+                <constraint firstItem="Rhc-fA-XQh" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="15" id="PHG-cd-tYC"/>
                 <constraint firstAttribute="bottom" secondItem="o7c-br-wf5" secondAttribute="bottom" id="UkV-jH-fS0"/>
-                <constraint firstItem="o7c-br-wf5" firstAttribute="leading" secondItem="EJV-LH-t1s" secondAttribute="trailing" constant="5" id="oxR-ny-WsN"/>
+                <constraint firstItem="vVv-Q5-Hup" firstAttribute="leading" secondItem="vgD-P2-w5R" secondAttribute="trailing" constant="2" id="ZLt-5y-YDM"/>
+                <constraint firstItem="vVv-Q5-Hup" firstAttribute="trailing" secondItem="Rhc-fA-XQh" secondAttribute="trailing" constant="-4" id="e0R-NI-Hg7"/>
+                <constraint firstItem="vVv-Q5-Hup" firstAttribute="centerY" secondItem="Rhc-fA-XQh" secondAttribute="centerY" id="kls-KX-ELD"/>
+                <constraint firstItem="o7c-br-wf5" firstAttribute="leading" secondItem="EJV-LH-t1s" secondAttribute="trailing" constant="4" id="oxR-ny-WsN"/>
+                <constraint firstItem="EJV-LH-t1s" firstAttribute="centerY" secondItem="Rhc-fA-XQh" secondAttribute="centerY" id="yMc-2K-DQJ"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
-            <point key="canvasLocation" x="353.62318840579712" y="-96.763392857142847"/>
+            <point key="canvasLocation" x="215.94202898550725" y="-97.098214285714278"/>
         </view>
     </objects>
     <resources>

+ 27 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineServiceView.h

@@ -0,0 +1,27 @@
+//
+//  MineServiceView.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/9/5.
+//
+
+#import <UIKit/UIKit.h>
+#import "MineActionView.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MineServiceView : UIView
+
+@property (nonatomic, assign) BOOL isMember;
+
++ (instancetype)shareInstance;
+
+- (void)configView;
+
+- (void)functionViewAction:(MineViewCallback)callback;
+
+- (CGFloat)getViewHeight;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 103 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineServiceView.m

@@ -0,0 +1,103 @@
+//
+//  MineServiceView.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/9/5.
+//
+
+#import "MineServiceView.h"
+
+@interface MineServiceView ()
+
+@property (nonatomic, copy) MineViewCallback callback;
+
+@property (nonatomic, strong) NSMutableArray *imageArray;
+
+@property (nonatomic, strong) NSMutableArray *titleArray;
+
+@property (nonatomic, strong) NSMutableArray *tagArray;
+
+@property (weak, nonatomic) IBOutlet UIView *containerView;
+
+@end
+
+@implementation MineServiceView
+
++ (instancetype)shareInstance {
+    MineServiceView *view = [[[NSBundle mainBundle] loadNibNamed:@"MineServiceView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)configView {
+    [self.containerView removeAllSubViews];
+    CGFloat space = (KPortraitWidth - 28 - 4 * FUNCTIONVIEW_WIDTH) / 5.0f;
+    BOOL tagHandle  = NO;
+    for (NSInteger index = 0; index < self.imageArray.count; index++) {
+        if (self.isMember == NO && index == 3) {
+            tagHandle = YES;
+            continue;
+        }
+        MineActionView *functionButton = [MineActionView shareInstance];
+        NSNumber *tagValue = self.tagArray[index];
+        MINEVIEWTYPE type = [tagValue intValue];
+        MJWeakSelf;
+        [functionButton configWithSource:self.imageArray[index] title:self.titleArray[index] functionType:type callback:^(MINEVIEWTYPE type) {
+            if (weakSelf.callback) {
+                weakSelf.callback(type);
+            }
+        }];
+        CGRect frame = CGRectZero;
+        if (tagHandle) {
+            frame = CGRectMake(space + (index - 1) % 4 * (space + FUNCTIONVIEW_WIDTH), FUNCTIONVIEW_WIDTH * ((index-1) / 4), FUNCTIONVIEW_WIDTH, FUNCTIONVIEW_HEIGHT);
+        }
+        else {
+            frame = CGRectMake(space + index % 4 * (space + FUNCTIONVIEW_WIDTH), FUNCTIONVIEW_WIDTH * (index / 4), FUNCTIONVIEW_WIDTH, FUNCTIONVIEW_HEIGHT);
+        }
+        functionButton.frame = frame;
+        [self.containerView addSubview:functionButton];
+    }
+}
+
+
+- (void)functionViewAction:(MineViewCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+
+- (CGFloat)getViewHeight {
+    return 232.0f;
+}
+
+
+- (NSMutableArray *)imageArray {
+    if (!_imageArray) {
+        _imageArray = [NSMutableArray arrayWithArray:@[@"tool_myLive",@"tool_liveCourse",@"tool_videoCourse",@"tool_musicRoom",@"tool_myAccompany",@"tool_homework",@"tool_evaluate"]];
+    }
+    return _imageArray;
+}
+
+- (NSMutableArray *)titleArray {
+    if (!_titleArray) {
+        _titleArray = [NSMutableArray arrayWithArray:@[@"商品订单",@"交易记录",@"优惠券"]];
+    }
+    return _titleArray;
+}
+
+- (NSMutableArray *)tagArray {
+    if (!_tagArray) {
+        _tagArray = [NSMutableArray arrayWithArray:@[@(MINEVIEWTYPE_ORDER),@(MINEVIEWTYPE_DEAL),@(MINEVIEWTYPE_TICKET)]];
+    }
+    return _tagArray;
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 73 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineServiceView.xib

@@ -0,0 +1,73 @@
+<?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">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <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="MineServiceView">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="140"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="apj-EC-FPP">
+                    <rect key="frame" x="14" y="0.0" width="386" height="128"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="服务工具" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sJi-oq-6fo">
+                            <rect key="frame" x="15" y="15" width="66" height="22"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="22" id="BVS-J0-t4Z"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="16"/>
+                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="T33-ng-PMj">
+                            <rect key="frame" x="0.0" y="39" width="386" height="90"/>
+                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="90" id="J2s-nK-ifv"/>
+                            </constraints>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                    <constraints>
+                        <constraint firstAttribute="trailing" secondItem="T33-ng-PMj" secondAttribute="trailing" id="kA3-rQ-khu"/>
+                        <constraint firstItem="sJi-oq-6fo" firstAttribute="top" secondItem="apj-EC-FPP" secondAttribute="top" constant="15" id="ke0-Sy-rSl"/>
+                        <constraint firstItem="sJi-oq-6fo" firstAttribute="leading" secondItem="apj-EC-FPP" secondAttribute="leading" constant="15" id="lLF-lF-Y6m"/>
+                        <constraint firstItem="T33-ng-PMj" firstAttribute="top" secondItem="sJi-oq-6fo" secondAttribute="bottom" constant="2" id="pG9-01-lN3"/>
+                        <constraint firstItem="T33-ng-PMj" firstAttribute="leading" secondItem="apj-EC-FPP" secondAttribute="leading" id="zwX-gp-qH4"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="apj-EC-FPP" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="0Ru-Xn-jtd"/>
+                <constraint firstAttribute="bottom" secondItem="apj-EC-FPP" secondAttribute="bottom" constant="12" id="9j8-8p-Nc7"/>
+                <constraint firstItem="apj-EC-FPP" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="nQY-MG-rqO"/>
+                <constraint firstAttribute="trailing" secondItem="apj-EC-FPP" secondAttribute="trailing" constant="14" id="zWH-d5-bzB"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="containerView" destination="T33-ng-PMj" id="YUC-6C-h5Z"/>
+            </connections>
+            <point key="canvasLocation" x="132" y="54"/>
+        </view>
+    </objects>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

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

@@ -0,0 +1,25 @@
+//
+//  MineStudyView.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/9/5.
+//
+
+#import <UIKit/UIKit.h>
+#import "MineActionView.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MineStudyView : UIView
+
++ (instancetype)shareInstance;
+
+- (void)configView;
+
+- (void)functionViewAction:(MineViewCallback)callback;
+
+- (CGFloat)getViewHeight;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 90 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineStudyView.m

@@ -0,0 +1,90 @@
+//
+//  MineStudyView.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/9/5.
+//
+
+#import "MineStudyView.h"
+
+@interface MineStudyView ()
+
+@property (nonatomic, copy) MineViewCallback callback;
+
+@property (nonatomic, strong) NSMutableArray *imageArray;
+
+@property (nonatomic, strong) NSMutableArray *titleArray;
+
+@property (nonatomic, strong) NSMutableArray *tagArray;
+
+@property (weak, nonatomic) IBOutlet UIView *containerView;
+
+@end
+
+@implementation MineStudyView
+
++ (instancetype)shareInstance {
+    MineStudyView *view = [[[NSBundle mainBundle] loadNibNamed:@"MineStudyView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)configView {
+    [self.containerView removeAllSubViews];
+    CGFloat space = (KPortraitWidth - 28 - 4 * FUNCTIONVIEW_WIDTH) / 5.0f;
+    for (NSInteger index = 0; index < self.imageArray.count; index++) {
+        MineActionView *functionButton = [MineActionView shareInstance];
+        NSNumber *tagValue = self.tagArray[index];
+        MINEVIEWTYPE type = [tagValue intValue];
+        MJWeakSelf;
+        [functionButton configWithSource:self.imageArray[index] title:self.titleArray[index] functionType:type callback:^(MINEVIEWTYPE type) {
+            
+            if (weakSelf.callback) {
+                weakSelf.callback(type);
+            }
+        }];
+        functionButton.frame = CGRectMake(space + index % 4 * (space + FUNCTIONVIEW_WIDTH), FUNCTIONVIEW_WIDTH * (index / 4), FUNCTIONVIEW_WIDTH, FUNCTIONVIEW_HEIGHT);
+        [self.containerView addSubview:functionButton];
+    }
+}
+
+- (void)functionViewAction:(MineViewCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+
+- (CGFloat)getViewHeight {
+    return 232.0f;
+}
+
+- (NSMutableArray *)imageArray {
+    if (!_imageArray) {
+        _imageArray = [NSMutableArray arrayWithArray:@[@"mine_course",@"mine_homework",@"mine_music",@"mine_judgeRecord"]];
+    }
+    return _imageArray;
+}
+
+- (NSMutableArray *)titleArray {
+    if (!_titleArray) {
+        _titleArray = [NSMutableArray arrayWithArray:@[@"我的课程",@"我的作业",@"我的乐谱",@"评测记录"]];
+    }
+    return _titleArray;
+}
+
+- (NSMutableArray *)tagArray {
+    if (!_tagArray) {
+        _tagArray = [NSMutableArray arrayWithArray:@[@(MINEVIEWTYPE_COURSE),@(MINEVIEWTYPE_HOMEWORK),@(MINEVIEWTYPE_MUSIC),@(MINEVIEWTYPE_RECORD)]];
+    }
+    return _tagArray;
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 73 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineStudyView.xib

@@ -0,0 +1,73 @@
+<?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">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <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="MineStudyView">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="140"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gpp-rY-pJi">
+                    <rect key="frame" x="14" y="0.0" width="386" height="128"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="常用工具" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HcK-MD-rIw">
+                            <rect key="frame" x="15" y="15" width="66" height="22"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="22" id="MbI-ir-vBf"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="16"/>
+                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9v3-pJ-nvl">
+                            <rect key="frame" x="0.0" y="39" width="386" height="90"/>
+                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="90" id="Ir0-c5-SoH"/>
+                            </constraints>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                    <constraints>
+                        <constraint firstItem="9v3-pJ-nvl" firstAttribute="leading" secondItem="gpp-rY-pJi" secondAttribute="leading" id="ECm-rk-Zoz"/>
+                        <constraint firstItem="9v3-pJ-nvl" firstAttribute="top" secondItem="HcK-MD-rIw" secondAttribute="bottom" constant="2" id="Fgz-4K-7sg"/>
+                        <constraint firstAttribute="trailing" secondItem="9v3-pJ-nvl" secondAttribute="trailing" id="Xl9-An-ZSN"/>
+                        <constraint firstItem="HcK-MD-rIw" firstAttribute="top" secondItem="gpp-rY-pJi" secondAttribute="top" constant="15" id="dIj-gY-5oJ"/>
+                        <constraint firstItem="HcK-MD-rIw" firstAttribute="leading" secondItem="gpp-rY-pJi" secondAttribute="leading" constant="15" id="rGS-vc-SFA"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="gpp-rY-pJi" secondAttribute="trailing" constant="14" id="BSL-H1-oAx"/>
+                <constraint firstAttribute="bottom" secondItem="gpp-rY-pJi" secondAttribute="bottom" constant="12" id="Ms3-0d-eKl"/>
+                <constraint firstItem="gpp-rY-pJi" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="RqT-Mz-nXM"/>
+                <constraint firstItem="gpp-rY-pJi" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="Wu0-WM-Wia"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="containerView" destination="9v3-pJ-nvl" id="j0N-kJ-piR"/>
+            </connections>
+            <point key="canvasLocation" x="131.8840579710145" y="-152.34375"/>
+        </view>
+    </objects>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

Some files were not shown because too many files changed in this diff