浏览代码

1.action 7 重新签到
2.优化功能修改

Steven 5 年之前
父节点
当前提交
16bb070d0c
共有 23 个文件被更改,包括 275 次插入211 次删除
  1. 6 0
      MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/Contents.json
  2. 22 0
      MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_noOpen.imageset/Contents.json
  3. 二进制
      MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_noOpen.imageset/sign_noOpen@2x.png
  4. 二进制
      MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_noOpen.imageset/sign_noOpen@3x.png
  5. 22 0
      MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_signed.imageset/Contents.json
  6. 二进制
      MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_signed.imageset/sign_signed@2x.png
  7. 二进制
      MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_signed.imageset/sign_signed@3x.png
  8. 22 0
      MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_waitSign.imageset/Contents.json
  9. 二进制
      MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_waitSign.imageset/sign_waitSign@2x.png
  10. 二进制
      MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_waitSign.imageset/sign_waitSign@3x.png
  11. 16 0
      MusicGradeExam/MusicGradeExam/UI/Classroom/Controller/ClassroomViewController.m
  12. 1 0
      MusicGradeExam/MusicGradeExam/UI/Classroom/Service/Classroom/ClassroomService.h
  13. 7 0
      MusicGradeExam/MusicGradeExam/UI/Classroom/Service/Classroom/ClassroomService.m
  14. 2 0
      MusicGradeExam/MusicGradeExam/UI/Classroom/Service/Classroom/Message/MemberChangeMessage.h
  15. 21 6
      MusicGradeExam/MusicGradeExam/UI/Exam/Controller/WaitExamViewController.m
  16. 0 2
      MusicGradeExam/MusicGradeExam/UI/Exam/View/WaitExamBodyView.h
  17. 68 48
      MusicGradeExam/MusicGradeExam/UI/Exam/View/WaitExamBodyView.m
  18. 17 54
      MusicGradeExam/MusicGradeExam/UI/Exam/View/WaitExamBodyView.xib
  19. 6 9
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/Controller/ExamViewController.m
  20. 1 3
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/ExamListCell.h
  21. 2 11
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/ExamListCell.m
  22. 18 34
      MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/ExamListCell.xib
  23. 44 44
      MusicGradeExam/MusicGradeExam/UI/UserCenter/View/UserCenterBodyView.xib

+ 6 - 0
MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/Contents.json

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

+ 22 - 0
MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_noOpen.imageset/Contents.json

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

二进制
MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_noOpen.imageset/sign_noOpen@2x.png


二进制
MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_noOpen.imageset/sign_noOpen@3x.png


+ 22 - 0
MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_signed.imageset/Contents.json

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

二进制
MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_signed.imageset/sign_signed@2x.png


二进制
MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_signed.imageset/sign_signed@3x.png


+ 22 - 0
MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_waitSign.imageset/Contents.json

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

二进制
MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_waitSign.imageset/sign_waitSign@2x.png


二进制
MusicGradeExam/MusicGradeExam/Assets.xcassets/WaitExam/sign_waitSign.imageset/sign_waitSign@3x.png


+ 16 - 0
MusicGradeExam/MusicGradeExam/UI/Classroom/Controller/ClassroomViewController.m

@@ -413,6 +413,22 @@
     [[RTCService sharedInstance] unPlayRemoteUserAudioStream:memberArray];
 }
 
+- (void)memberNoFinishAction:(RoomMember *)member {
+    NSLog(@"memberRecordAction %@", member);
+    RoomMember *curMember = [ClassroomService sharedService].currentRoom.currentMember;
+    if ([curMember.userId isEqualToString:member.userId]) {
+        [KSNormalAlertView ks_showAlertWithTitle:@"考官已将你移出教室,请检查设备及网络状态正常后再次签到考试" confirmTitle:@"确定" confirm:^{
+            // 离开教室
+            self.isQuitRoom = YES;
+            self.hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
+            [[RoomLoginHelper sharedInstance] logout:^{
+            } error:^(RongRTCCode code) {
+                [self.hud hideAnimated:YES];
+            }];
+        }];
+    }
+}
+
 - (void)errorDidOccur:(ErrorCode)code {
     NSLog(@"errorDidOccur %@",@(code));
     [self.hud hideAnimated:YES];

+ 1 - 0
MusicGradeExam/MusicGradeExam/UI/Classroom/Service/Classroom/ClassroomService.h

@@ -25,6 +25,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)memberDidKick:(RoomMember *)member;
 - (void)memberRecordAction:(RoomMember *)member;
 - (void)memberIgnoreAction:(RoomMember *)member;
+- (void)memberNoFinishAction:(RoomMember *)member;
 //转让助教,助教收到的回调
 - (void)assistantDidTransfer:(RoomMember *)oldAssistant newAssistant:(RoomMember *)newAssistant;
 //除降级外其它角色变化

+ 7 - 0
MusicGradeExam/MusicGradeExam/UI/Classroom/Service/Classroom/ClassroomService.m

@@ -730,6 +730,13 @@
                 [self.classroomDelegate memberIgnoreAction:mem];
             }
         }
+        else if (msg.action == MemberChangeActionNoFinish) { // 未完成考试重新去排队
+            RoomMember *mem = [self.currentRoom getMember:msg.userId];
+
+            if ([self.classroomDelegate respondsToSelector:@selector(memberNoFinishAction:)]) {
+                [self.classroomDelegate memberNoFinishAction:mem];
+            }
+        }
     });
 }
 

+ 2 - 0
MusicGradeExam/MusicGradeExam/UI/Classroom/Service/Classroom/Message/MemberChangeMessage.h

@@ -23,6 +23,8 @@ typedef NS_ENUM(NSUInteger, MemberChangeAction) {
     MemberChangeActionRefresh = 5,
     // 用户不接收播放对应成员的声音
     MemberChangeActionIgnore = 6,
+    // 重新去排队
+    MemberChangeActionNoFinish = 7,
 };
 
 /**

+ 21 - 6
MusicGradeExam/MusicGradeExam/UI/Exam/Controller/WaitExamViewController.m

@@ -68,6 +68,10 @@
         return;
     }
     [self requestDataWithHub:YES];
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+    [super viewDidAppear:animated];
     BOOL hasAppear = UserDefaultBoolForKey(@"examTipsTop");
     if (hasAppear == NO) {
         [self addIntroduceView];
@@ -75,16 +79,28 @@
 }
 
 - (void)addIntroduceView {
+    
     UserDefaultSetBoolForKey(YES, @"examTipsTop");
     
-    NSArray *tipsArray = @[@"考场开启后,才可已进行签到,签到后排考", @"展示为当前考场的排考信息"];
-    CGRect rect1 = CGRectMake((kScreenWidth-140)/2.0f, kNaviBarHeight + 16, 140, 140);
+    CGRect rect1 = [self.bodyView convertRect:self.bodyView.signButton.frame toView:[UIApplication sharedApplication].keyWindow];
+    rect1.origin.y += 8;
+    rect1.origin.x += 8;
+    rect1.size.width -= 16;
+    rect1.size.height -= 16;
+    
     UIBezierPath *pathOne = [UIBezierPath bezierPathWithOvalInRect:rect1];
     CGRect rect2 = [self.bodyView convertRect:self.bodyView.examMessageView.frame toView:[UIApplication sharedApplication].keyWindow];
-    rect2.origin.y += kNaviBarHeight;
     UIBezierPath *pathSecond = [UIBezierPath bezierPathWithRect:rect2];
     
+    CGFloat height = CGRectGetHeight(self.bodyView.frame);
+    NSArray *tipsArray = @[@"考场开启后,才可已进行签到,签到后排考", @"展示为当前考场的排考信息"];
     NSArray *bezierArray = @[pathOne,pathSecond];
+    if (height == kScreenHeight - kTabBarHeight - iPhoneXSafeBottomMargin) {
+        CGRect rect3 = [self.bodyView convertRect:self.bodyView.tipsView.frame toView:[UIApplication sharedApplication].keyWindow];
+        UIBezierPath *pathThree = [UIBezierPath bezierPathWithRect:rect3];
+        tipsArray = @[@"考场开启后,才可已进行签到,签到后排考", @"展示为当前考场的排考信息",@"展示为线上考试的注意事项"];
+        bezierArray = @[pathOne,pathSecond,pathThree];
+    }
     
     KSGuideMaskView *guideView = [[KSGuideMaskView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
     [guideView addTips:tipsArray transparentRect:bezierArray shaperLayerIndex:0];
@@ -132,7 +148,7 @@
 
 - (void)configViewHeight {
     CGFloat tipsHeight = [self.bodyView configTipsHeight:self.sourceModel.desc];
-    CGFloat viewHeight = 206 + 200 + 19 + tipsHeight + 50 + 21 + 9 + 50 + 27;
+    CGFloat viewHeight = 206 + 160 + 19 + tipsHeight + 50 + 21 + 9 + 50 + 27;
     viewHeight = viewHeight > kScreenHeight - kTabBarHeight - iPhoneXSafeBottomMargin ? viewHeight : kScreenHeight - kTabBarHeight - iPhoneXSafeBottomMargin;
     self.bodyView.frame = CGRectMake(0, 0, kScreenWidth, viewHeight);
     [self.scrollView setContentSize:CGSizeMake(kScreenWidth, viewHeight)];
@@ -144,7 +160,7 @@
     self.scrollView.delegate = self;
     self.scrollView.bounces = NO;
     _bodyView = [WaitExamBodyView shareInstance];
-    CGFloat viewHeight = 206 + 200 + 19 + 204 + 50 + 21 + 9 + 50 + 27;
+    CGFloat viewHeight = 206 + 160 + 19 + 204 + 50 + 21 + 9 + 50 + 27;
     viewHeight = viewHeight > kScreenHeight - kTabBarHeight - iPhoneXSafeBottomMargin ? viewHeight : kScreenHeight - kTabBarHeight - iPhoneXSafeBottomMargin;
     _bodyView.frame = CGRectMake(0, 0, kScreenWidth, viewHeight);
     MJWeakSelf;
@@ -200,7 +216,6 @@
         [self removehub];
         if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
             [self MBPShow:@"签到成功"];
-            self.bodyView.isSign = YES;
             // 判断是否能进入教室
             [self requestDataWithHub:NO];
         }

+ 0 - 2
MusicGradeExam/MusicGradeExam/UI/Exam/View/WaitExamBodyView.h

@@ -21,8 +21,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (weak, nonatomic) IBOutlet UIButton *signButton;
 
-@property (nonatomic, assign) BOOL isSign;
-
 @property (nonatomic, assign) BOOL canJoinRoom;
 
 @property (weak, nonatomic) IBOutlet UIButton *joinButton;

+ 68 - 48
MusicGradeExam/MusicGradeExam/UI/Exam/View/WaitExamBodyView.m

@@ -8,6 +8,12 @@
 
 #import "WaitExamBodyView.h"
 
+typedef NS_ENUM(NSInteger,EXAMSTATUS) {
+    EXAMSTATUS_NOSTART, // 考场未开启
+    EXAMSTATUS_WAITSIGN, // 等待签到
+    EXAMSTATUS_SINGED,   // 已签到
+};
+
 @interface WaitExamBodyView ()
 
 @property (weak, nonatomic) IBOutlet UILabel *signDescLabel;
@@ -26,24 +32,16 @@
 
 @property (nonatomic, strong) TicketDetailModel *sourceModel;
 
-@property (nonatomic, strong) CAGradientLayer *gradientLayer;
+@property (nonatomic, assign) EXAMSTATUS status;
 
 @end
 
 @implementation WaitExamBodyView
 - (void)awakeFromNib {
     [super awakeFromNib];
-    [self.signButton.layer insertSublayer:self.gradientLayer atIndex:0];
-    self.signButton.layer.masksToBounds = YES;
 }
 
-- (void)layoutSubviews {
-    [super layoutSubviews];
-    //在这里获取frame
-    if (_gradientLayer) {
-        _gradientLayer.frame = CGRectMake(0, 0, CGRectGetWidth(self.signButton.frame), CGRectGetHeight(self.signButton.frame));
-    }
-}
+
 
 + (instancetype)shareInstance {
     WaitExamBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"WaitExamBodyView" owner:nil options:nil] firstObject];
@@ -53,29 +51,46 @@
 - (void)configMessageSource:(TicketDetailModel *)source {
     self.sourceModel = source;
     if ([NSString isEmptyString:source.signInTime]) {
-        self.isSign = NO;
-        self.signDescLabel.text = @"您还未签到,签到后可进入教室";
+        if (source.openFlag == 0) { // 考场未开启
+            self.status = EXAMSTATUS_NOSTART;
+        }
+        else {
+            self.status = EXAMSTATUS_WAITSIGN;
+        }
     }
     else {
-        self.isSign = YES;
-        self.signDescLabel.text = @"您已签到,请点击下方按钮进入教室";
+        self.status = EXAMSTATUS_SINGED;
     }
     
-    if (self.sourceModel.recordFlag == 1 && self.sourceModel.finishedExam == 4) { // 录播考试开启中
-        self.canJoinRoom = YES;
-        [self.joinButton setTitle:@"录播考试" forState:UIControlStateNormal];
-    }
-    else if (self.sourceModel.finishedExam == 5) { // 考试已完成
+    
+    if (self.status == EXAMSTATUS_SINGED) { // 已签到显示
+        if (self.sourceModel.recordFlag == 1 && self.sourceModel.finishedExam == 4) { // 录播考试开启中
+            self.canJoinRoom = YES;
+            [self.joinButton setTitle:@"录播考试" forState:UIControlStateNormal];
+        }
+        else if (self.sourceModel.finishedExam == 5) { // 考试已完成
+            self.canJoinRoom = NO;
+            [self.joinButton setTitle:@"考试已完成" forState:UIControlStateNormal];
+        }
+        else {
+            self.canJoinRoom = self.sourceModel.classroomSwitch;
+            if (self.sourceModel.classroomSwitch == 0) {
+                NSString *title = [NSString stringWithFormat:@"当前需要等待%.0f位考生",self.sourceModel.waitNum];
+               [self.joinButton setTitle:title forState:UIControlStateNormal];
+            }
+            else {
+                [self.joinButton setTitle:@"到你了,进入教室" forState:UIControlStateNormal];
+            }
+        }
+    }
+    else { // 未签到显示
         self.canJoinRoom = NO;
-        [self.joinButton setTitle:@"考试已完成" forState:UIControlStateNormal];
-    }
-    else {
-        self.canJoinRoom = self.sourceModel.classroomSwitch;
         [self.joinButton setTitle:@"进入教室" forState:UIControlStateNormal];
     }
     
     
     
+    
     self.classDate.text = [[self.sourceModel.examStartTime componentsSeparatedByString:@" "] firstObject];
     self.subjectLabel.text = [NSString returnNoNullStringWithString:self.sourceModel.baseExamName];
 
@@ -118,21 +133,39 @@
     return height + 60;
 }
 
-- (void)setIsSign:(BOOL)isSign {
-    _isSign = isSign;
-    if (isSign) {
-        [self.gradientLayer removeFromSuperlayer];
-        _gradientLayer = nil;
-        self.signButton.userInteractionEnabled = NO;
-        [self.signButton setTitle:@"已签到" forState:UIControlStateNormal];
-    }
-    else {
-        [self.signButton.layer insertSublayer:self.gradientLayer atIndex:0];
-        self.signButton.userInteractionEnabled = YES;
-        [self.signButton setTitle:@"签到" forState:UIControlStateNormal];
+- (void)setStatus:(EXAMSTATUS)status {
+    _status = status;
+    switch (status) {
+        case EXAMSTATUS_NOSTART:
+        {
+            self.signButton.userInteractionEnabled = NO;
+            [self.signButton setTitle:@"考试未开启" forState:UIControlStateNormal];
+            [self.signButton setBackgroundImage:[UIImage imageNamed:@"sign_noOpen"] forState:UIControlStateNormal];
+            self.signDescLabel.text = @"考场暂未开启,考场开启后可签到";
+        }
+            break;
+        case EXAMSTATUS_WAITSIGN:
+        {
+            self.signButton.userInteractionEnabled = YES;
+            [self.signButton setTitle:@"签到" forState:UIControlStateNormal];
+            [self.signButton setBackgroundImage:[UIImage imageNamed:@"sign_waitSign"] forState:UIControlStateNormal];
+            self.signDescLabel.text = @"您还未签到,签到后可进入教室";
+        }
+            break;
+        case EXAMSTATUS_SINGED:
+        {
+            self.signButton.userInteractionEnabled = NO;
+            [self.signButton setTitle:@"已签到" forState:UIControlStateNormal];
+            self.signDescLabel.text = @"您已签到,请点击下方按钮进入教室";
+            [self.signButton setBackgroundImage:[UIImage imageNamed:@"sign_signed"] forState:UIControlStateNormal];
+        }
+            break;
+        default:
+            break;
     }
 }
 
+
 - (void)setCanJoinRoom:(BOOL)canJoinRoom {
     _canJoinRoom = canJoinRoom;
     if (canJoinRoom) {
@@ -173,19 +206,6 @@
     }
 }
 
-- (CAGradientLayer *)gradientLayer {
-    if (!_gradientLayer) {
-        _gradientLayer = [CAGradientLayer layer];
-        _gradientLayer.startPoint = CGPointMake(0.5, 0.02);
-        _gradientLayer.endPoint = CGPointMake(0.5, 0.97);
-        _gradientLayer.locations = @[@(0),@(1.0)];//渐变点
-        UIColor *startColor = HexRGB(0xffd1b0);
-        UIColor *endColor = HexRGB(0xffb378);
-        [_gradientLayer setColors:@[(id)(startColor.CGColor),(id)(endColor.CGColor)]];//渐变数组
-    }
-    return _gradientLayer;
-}
-
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 17 - 54
MusicGradeExam/MusicGradeExam/UI/Exam/View/WaitExamBodyView.xib

@@ -18,38 +18,27 @@
                     <rect key="frame" x="0.0" y="0.0" width="414" height="206"/>
                     <subviews>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WEa-ER-E4J">
-                            <rect key="frame" x="142" y="21" width="130" height="130"/>
-                            <color key="backgroundColor" red="0.80000000000000004" green="0.80000000000000004" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <rect key="frame" x="129" y="8" width="156" height="156"/>
                             <constraints>
-                                <constraint firstAttribute="height" constant="130" id="MG0-I2-lcH"/>
-                                <constraint firstAttribute="width" constant="130" id="yIg-pH-8vg"/>
+                                <constraint firstAttribute="height" constant="156" id="MG0-I2-lcH"/>
+                                <constraint firstAttribute="width" constant="156" id="yIg-pH-8vg"/>
                             </constraints>
                             <fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/>
-                            <state key="normal" title="签到"/>
+                            <state key="normal" title="考试未开始" backgroundImage="sign_noOpen"/>
                             <userDefinedRuntimeAttributes>
                                 <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
-                                    <size key="value" width="0.0" height="4"/>
-                                </userDefinedRuntimeAttribute>
-                                <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
-                                    <color key="value" red="0.8862745098" green="0.62745098040000002" blue="0.41960784309999999" alpha="0.47999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
-                                </userDefinedRuntimeAttribute>
-                                <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
-                                    <real key="value" value="1"/>
-                                </userDefinedRuntimeAttribute>
-                                <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
-                                    <real key="value" value="13"/>
+                                    <size key="value" width="0.0" height="0.0"/>
                                 </userDefinedRuntimeAttribute>
                                 <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                                     <real key="value" value="65"/>
                                 </userDefinedRuntimeAttribute>
-                                <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
                             </userDefinedRuntimeAttributes>
                             <connections>
                                 <action selector="signAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="hmj-oo-ksM"/>
                             </connections>
                         </button>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="您还未签到,签到后可进入教室" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="O3Y-5U-nUH">
-                            <rect key="frame" x="107" y="165" width="200" height="17"/>
+                            <rect key="frame" x="107" y="164" width="200" height="17"/>
                             <fontDescription key="fontDescription" type="system" pointSize="14"/>
                             <color key="textColor" red="0.50196078430000002" green="0.50196078430000002" blue="0.50196078430000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
@@ -59,13 +48,13 @@
                     <constraints>
                         <constraint firstItem="O3Y-5U-nUH" firstAttribute="centerX" secondItem="UYp-Af-6p1" secondAttribute="centerX" id="E8W-oR-bXW"/>
                         <constraint firstItem="WEa-ER-E4J" firstAttribute="centerX" secondItem="UYp-Af-6p1" secondAttribute="centerX" id="f1Q-Hm-BNr"/>
-                        <constraint firstItem="WEa-ER-E4J" firstAttribute="top" secondItem="UYp-Af-6p1" secondAttribute="top" constant="21" id="r33-76-GI3"/>
-                        <constraint firstItem="O3Y-5U-nUH" firstAttribute="top" secondItem="WEa-ER-E4J" secondAttribute="bottom" constant="14" id="ss3-dm-TvK"/>
+                        <constraint firstItem="WEa-ER-E4J" firstAttribute="top" secondItem="UYp-Af-6p1" secondAttribute="top" constant="8" id="r33-76-GI3"/>
+                        <constraint firstItem="O3Y-5U-nUH" firstAttribute="top" secondItem="WEa-ER-E4J" secondAttribute="bottom" id="ss3-dm-TvK"/>
                         <constraint firstAttribute="height" constant="206" id="yii-Oa-qGV"/>
                     </constraints>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Pa9-Km-YvF">
-                    <rect key="frame" x="0.0" y="206" width="414" height="200"/>
+                    <rect key="frame" x="0.0" y="206" width="414" height="160"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="日期:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qtd-ei-Gfc">
                             <rect key="frame" x="16" y="25" width="110" height="21"/>
@@ -95,20 +84,6 @@
                             <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="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="tW6-ZA-2q9">
-                            <rect key="frame" x="16" y="151" width="110" height="21"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="21" id="79W-AN-hFy"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                            <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                            <userDefinedRuntimeAttributes>
-                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                    <real key="value" value="10"/>
-                                </userDefinedRuntimeAttribute>
-                            </userDefinedRuntimeAttributes>
-                        </label>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qLV-gz-q1k">
                             <rect key="frame" x="143" y="25" width="0.0" height="21"/>
                             <constraints>
@@ -136,42 +111,27 @@
                             <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="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="KQk-Oi-2gF">
-                            <rect key="frame" x="143" y="151" width="0.0" height="21"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="21" id="AvQ-vK-bnf"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                            <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
                     </subviews>
                     <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
                     <constraints>
-                        <constraint firstItem="tW6-ZA-2q9" firstAttribute="width" secondItem="qtd-ei-Gfc" secondAttribute="width" id="03D-3v-oA5"/>
                         <constraint firstItem="XNA-1W-zWF" firstAttribute="top" secondItem="OCV-Hb-Bhx" secondAttribute="bottom" constant="21" id="3FF-sh-Cqn"/>
                         <constraint firstItem="cOI-UA-7JY" firstAttribute="leading" secondItem="qLV-gz-q1k" secondAttribute="leading" id="3MN-PZ-dFh"/>
                         <constraint firstItem="XNA-1W-zWF" firstAttribute="leading" secondItem="qtd-ei-Gfc" secondAttribute="leading" id="6P2-Oj-G9R"/>
                         <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="cOI-UA-7JY" secondAttribute="trailing" constant="16" id="6T7-nb-Lab"/>
                         <constraint firstItem="OCV-Hb-Bhx" firstAttribute="leading" secondItem="qtd-ei-Gfc" secondAttribute="leading" id="9Jz-LY-exP"/>
                         <constraint firstItem="qLV-gz-q1k" firstAttribute="centerY" secondItem="qtd-ei-Gfc" secondAttribute="centerY" id="9qw-jn-l5h"/>
-                        <constraint firstItem="KQk-Oi-2gF" firstAttribute="centerY" secondItem="tW6-ZA-2q9" secondAttribute="centerY" id="BAf-DH-X9y"/>
                         <constraint firstItem="qtd-ei-Gfc" firstAttribute="top" secondItem="Pa9-Km-YvF" secondAttribute="top" constant="25" id="BnX-c4-Gt9"/>
                         <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Czx-Hb-wZ8" secondAttribute="trailing" constant="16" id="C6S-hw-grJ"/>
                         <constraint firstItem="qtd-ei-Gfc" firstAttribute="leading" secondItem="Pa9-Km-YvF" secondAttribute="leading" constant="16" id="HOo-6Z-Kgt"/>
                         <constraint firstItem="OCV-Hb-Bhx" firstAttribute="width" secondItem="qtd-ei-Gfc" secondAttribute="width" id="M0m-Nb-unT"/>
-                        <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="KQk-Oi-2gF" secondAttribute="trailing" constant="16" id="RAw-rj-oip"/>
                         <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="qLV-gz-q1k" secondAttribute="trailing" constant="16" id="WAO-th-Xen"/>
                         <constraint firstItem="qLV-gz-q1k" firstAttribute="leading" secondItem="qtd-ei-Gfc" secondAttribute="trailing" constant="17" id="We3-Qx-gdZ"/>
-                        <constraint firstItem="KQk-Oi-2gF" firstAttribute="leading" secondItem="qLV-gz-q1k" secondAttribute="leading" id="bKC-gi-atQ"/>
                         <constraint firstItem="Czx-Hb-wZ8" firstAttribute="centerY" secondItem="XNA-1W-zWF" secondAttribute="centerY" id="clu-bH-TUg"/>
                         <constraint firstItem="OCV-Hb-Bhx" firstAttribute="top" secondItem="qtd-ei-Gfc" secondAttribute="bottom" constant="21" id="hG2-lP-JZq"/>
                         <constraint firstItem="cOI-UA-7JY" firstAttribute="centerY" secondItem="OCV-Hb-Bhx" secondAttribute="centerY" id="icw-Y1-VzF"/>
                         <constraint firstItem="XNA-1W-zWF" firstAttribute="width" secondItem="qtd-ei-Gfc" secondAttribute="width" id="jxC-bT-Z6h"/>
-                        <constraint firstItem="tW6-ZA-2q9" firstAttribute="top" secondItem="XNA-1W-zWF" secondAttribute="bottom" constant="21" id="nMi-x8-UAm"/>
                         <constraint firstItem="Czx-Hb-wZ8" firstAttribute="leading" secondItem="qLV-gz-q1k" secondAttribute="leading" id="pUg-OJ-6gK"/>
-                        <constraint firstItem="tW6-ZA-2q9" firstAttribute="leading" secondItem="qtd-ei-Gfc" secondAttribute="leading" id="sWl-LO-y1T"/>
-                        <constraint firstAttribute="height" constant="200" id="w0j-Ad-QsE"/>
+                        <constraint firstAttribute="height" constant="160" id="w0j-Ad-QsE"/>
                     </constraints>
                     <userDefinedRuntimeAttributes>
                         <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -180,7 +140,7 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rEr-rK-lTU">
-                    <rect key="frame" x="0.0" y="425" width="414" height="60"/>
+                    <rect key="frame" x="0.0" y="385" width="414" height="60"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="考试注意事项" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Eny-Xj-7OZ">
                             <rect key="frame" x="15" y="15" width="92" height="20"/>
@@ -214,7 +174,7 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8bl-8o-KNJ">
-                    <rect key="frame" x="17" y="506" width="380" height="50"/>
+                    <rect key="frame" x="17" y="466" width="380" height="50"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="50" id="gcf-YI-Gnf"/>
                     </constraints>
@@ -237,7 +197,7 @@
                     </connections>
                 </button>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="I8H-IY-JIX">
-                    <rect key="frame" x="16" y="566" width="382" height="50"/>
+                    <rect key="frame" x="16" y="526" width="382" height="50"/>
                     <color key="backgroundColor" red="0.80000000000000004" green="0.80000000000000004" blue="0.80000000000000004" alpha="1" colorSpace="calibratedRGB"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="50" id="fRv-bF-dQZ"/>
@@ -271,6 +231,7 @@
                 <constraint firstItem="rEr-rK-lTU" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="ktB-06-Zxi"/>
                 <constraint firstItem="8bl-8o-KNJ" firstAttribute="top" secondItem="rEr-rK-lTU" secondAttribute="bottom" constant="21" id="t2z-bu-S2A"/>
             </constraints>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
             <connections>
                 <outlet property="classDate" destination="qLV-gz-q1k" id="deW-pB-idj"/>
@@ -282,9 +243,11 @@
                 <outlet property="subjectLabel" destination="cOI-UA-7JY" id="95e-BG-AVB"/>
                 <outlet property="tipsLabel" destination="LPU-2y-DR5" id="b5a-fX-xS4"/>
                 <outlet property="tipsView" destination="rEr-rK-lTU" id="QFY-uH-NJW"/>
-                <outlet property="waitLabel" destination="KQk-Oi-2gF" id="m6Y-Ea-Z5h"/>
             </connections>
             <point key="canvasLocation" x="131.8840579710145" y="101.78571428571428"/>
         </view>
     </objects>
+    <resources>
+        <image name="sign_noOpen" width="164" height="164"/>
+    </resources>
 </document>

+ 6 - 9
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/Controller/ExamViewController.m

@@ -75,28 +75,25 @@
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     ExamListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ExamListCell"];
     BaseExamModel *model = self.dataArray[indexPath.row];
-    MJWeakSelf;
-    [cell configCellWithSource:model callback:^(BaseExamModel * _Nonnull source) {
-        [weakSelf examLibraryView:source];
-    }];
-
+    [cell configCellWithSource:model];
+    
     return cell;
 }
 
-- (void)examLibraryView:(BaseExamModel *)source {
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+    BaseExamModel *model = self.dataArray[indexPath.row];
     ExamLibraryController *libraryVC = [[ExamLibraryController alloc] init];
-    libraryVC.tenantId = [NSString stringWithFormat:@"%.0f",source.tenantId];
+    libraryVC.tenantId = [NSString stringWithFormat:@"%.0f",model.tenantId];
     [self.navigationController pushViewController:libraryVC animated:YES];
 }
 
-
 #pragma mark ------- lazying
 - (UITableView *)tableView {
     if (!_tableView) {
         _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 37.5, kScreenWidth, kScreenHeight - kNaviBarHeight - 37.5 - iPhoneXSafeBottomMargin) style:UITableViewStylePlain];
         _tableView.delegate = self;
         _tableView.dataSource = self;
-        _tableView.rowHeight = 128;
+        _tableView.rowHeight = 55;
         _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
         _tableView.backgroundColor = HexRGB(0xf3f4f8);
         _tableView.showsVerticalScrollIndicator = NO;

+ 1 - 3
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/ExamListCell.h

@@ -9,13 +9,11 @@
 #import <UIKit/UIKit.h>
 #import "BaseExamModel.h"
 
-typedef void(^CheckCallback)(BaseExamModel * _Nonnull source);
-
 NS_ASSUME_NONNULL_BEGIN
 
 @interface ExamListCell : UITableViewCell
 
-- (void)configCellWithSource:(BaseExamModel *)source callback:(CheckCallback)callback;
+- (void)configCellWithSource:(BaseExamModel *)source;
 
 @end
 

+ 2 - 11
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/ExamListCell.m

@@ -12,9 +12,8 @@
 
 @property (weak, nonatomic) IBOutlet UILabel *examName;
 
-@property (nonatomic, copy) CheckCallback callback;
-
 @property (nonatomic, strong) BaseExamModel *sourceModel;
+
 @end
 
 @implementation ExamListCell
@@ -25,20 +24,12 @@
     self.selectionStyle = UITableViewCellSelectionStyleNone;
 }
 
-- (void)configCellWithSource:(BaseExamModel *)source callback:(CheckCallback)callback {
-    if (callback) {
-        self.callback = callback;
-    }
+- (void)configCellWithSource:(BaseExamModel *)source {
     // 赋值
     self.sourceModel = source;
     self.examName.text = [NSString returnNoNullStringWithString:self.sourceModel.baseExamName];
 }
 
-- (IBAction)checkLibrary:(id)sender {
-    if (self.callback) {
-        self.callback(self.sourceModel);
-    }
-}
 
 - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
     [super setSelected:selected animated:animated];

+ 18 - 34
MusicGradeExam/MusicGradeExam/UI/ExamLibrary/View/ExamListCell.xib

@@ -10,11 +10,11 @@
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
-        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="KGk-i7-Jjw" customClass="ExamListCell">
-            <rect key="frame" x="0.0" y="0.0" width="375" height="127"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="61" id="KGk-i7-Jjw" customClass="ExamListCell">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="61"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
-                <rect key="frame" x="0.0" y="0.0" width="375" height="127"/>
+                <rect key="frame" x="0.0" y="0.0" width="375" height="61"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KSe-C0-CoG">
@@ -30,53 +30,34 @@
                                 <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="J93-t7-BFk">
-                                <rect key="frame" x="116" y="17" width="243" height="20"/>
+                                <rect key="frame" x="116" y="17" width="229" height="20"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                 <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_next" translatesAutoresizingMaskIntoConstraints="NO" id="rsA-kM-UE5">
+                                <rect key="frame" x="345" y="16" width="22" height="22"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="22" id="tNU-bn-6e5"/>
+                                    <constraint firstAttribute="height" constant="22" id="wVK-tX-EIt"/>
+                                </constraints>
+                            </imageView>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
                         <constraints>
+                            <constraint firstItem="rsA-kM-UE5" firstAttribute="centerY" secondItem="KSe-C0-CoG" secondAttribute="centerY" id="4gE-69-1YQ"/>
+                            <constraint firstItem="rsA-kM-UE5" firstAttribute="leading" secondItem="J93-t7-BFk" secondAttribute="trailing" id="Cju-eN-0fi"/>
                             <constraint firstItem="oKH-jv-WHB" firstAttribute="leading" secondItem="KSe-C0-CoG" secondAttribute="leading" constant="16" id="IL9-QP-btl"/>
-                            <constraint firstAttribute="trailing" secondItem="J93-t7-BFk" secondAttribute="trailing" constant="16" id="LX5-Vc-eLu"/>
+                            <constraint firstAttribute="trailing" secondItem="rsA-kM-UE5" secondAttribute="trailing" constant="8" id="NJs-4v-o2q"/>
                             <constraint firstItem="oKH-jv-WHB" firstAttribute="centerY" secondItem="KSe-C0-CoG" secondAttribute="centerY" id="SUJ-wi-iKy"/>
                             <constraint firstItem="J93-t7-BFk" firstAttribute="centerY" secondItem="KSe-C0-CoG" secondAttribute="centerY" id="a3l-P0-4w1"/>
                             <constraint firstItem="J93-t7-BFk" firstAttribute="leading" secondItem="oKH-jv-WHB" secondAttribute="trailing" constant="20" id="fJ2-d2-cFN"/>
                             <constraint firstAttribute="height" constant="54" id="hDd-Kn-nr2"/>
                         </constraints>
                     </view>
-                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="DiB-cc-Cfc">
-                        <rect key="frame" x="0.0" y="55" width="375" height="54"/>
-                        <subviews>
-                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="97F-i4-JR3">
-                                <rect key="frame" x="132.5" y="5" width="110" height="44"/>
-                                <constraints>
-                                    <constraint firstAttribute="width" constant="110" id="lH0-bU-Q3e"/>
-                                </constraints>
-                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
-                                <state key="normal" title="查看曲库信息">
-                                    <color key="titleColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="calibratedRGB"/>
-                                </state>
-                                <connections>
-                                    <action selector="checkLibrary:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="SId-PF-tDc"/>
-                                </connections>
-                            </button>
-                        </subviews>
-                        <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
-                        <constraints>
-                            <constraint firstAttribute="bottom" secondItem="97F-i4-JR3" secondAttribute="bottom" constant="5" id="HAm-wr-oLR"/>
-                            <constraint firstAttribute="height" constant="54" id="Pv3-4q-qCm"/>
-                            <constraint firstItem="97F-i4-JR3" firstAttribute="top" secondItem="DiB-cc-Cfc" secondAttribute="top" constant="5" id="iC3-hn-lh6"/>
-                            <constraint firstItem="97F-i4-JR3" firstAttribute="centerX" secondItem="DiB-cc-Cfc" secondAttribute="centerX" id="nEi-wY-BB5"/>
-                        </constraints>
-                    </view>
                 </subviews>
                 <constraints>
-                    <constraint firstItem="DiB-cc-Cfc" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="0CQ-eY-qji"/>
                     <constraint firstItem="KSe-C0-CoG" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="9ve-1X-zKS"/>
-                    <constraint firstAttribute="trailing" secondItem="DiB-cc-Cfc" secondAttribute="trailing" id="OQe-hp-4xi"/>
-                    <constraint firstItem="DiB-cc-Cfc" firstAttribute="top" secondItem="KSe-C0-CoG" secondAttribute="bottom" constant="1" id="aGJ-dL-JaZ"/>
                     <constraint firstItem="KSe-C0-CoG" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="hsC-bq-PFP"/>
                     <constraint firstAttribute="trailing" secondItem="KSe-C0-CoG" secondAttribute="trailing" id="rRc-Iv-mDf"/>
                 </constraints>
@@ -86,7 +67,10 @@
             <connections>
                 <outlet property="examName" destination="J93-t7-BFk" id="4kv-LR-eHY"/>
             </connections>
-            <point key="canvasLocation" x="132" y="96"/>
+            <point key="canvasLocation" x="131.15942028985509" y="72.65625"/>
         </tableViewCell>
     </objects>
+    <resources>
+        <image name="mine_next" width="22" height="22"/>
+    </resources>
 </document>

+ 44 - 44
MusicGradeExam/MusicGradeExam/UI/UserCenter/View/UserCenterBodyView.xib

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097.2" 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"/>
@@ -124,47 +124,8 @@
                         <outletCollection property="gestureRecognizers" destination="zK2-z6-q9u" appends="YES" id="2DZ-Ul-OMX"/>
                     </connections>
                 </view>
-                <view tag="1002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5g2-bn-28F">
-                    <rect key="frame" x="0.0" y="197" width="414" height="50"/>
-                    <subviews>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="system_setting" translatesAutoresizingMaskIntoConstraints="NO" id="FXu-y9-8Zr">
-                            <rect key="frame" x="18" y="14" width="22" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="22" id="H4z-lE-7ew"/>
-                                <constraint firstAttribute="width" constant="22" id="HI9-vl-Sdh"/>
-                            </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="b9t-x6-SsH">
-                            <rect key="frame" x="54" y="14.5" width="35" height="21"/>
-                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_next" translatesAutoresizingMaskIntoConstraints="NO" id="K1E-x3-Nb5">
-                            <rect key="frame" x="380" y="14" width="22" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="width" constant="22" id="JG4-Je-uNK"/>
-                                <constraint firstAttribute="height" constant="22" id="dPr-lS-Z7g"/>
-                            </constraints>
-                        </imageView>
-                    </subviews>
-                    <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
-                    <gestureRecognizers/>
-                    <constraints>
-                        <constraint firstItem="FXu-y9-8Zr" firstAttribute="leading" secondItem="5g2-bn-28F" secondAttribute="leading" constant="18" id="0Co-EC-i5W"/>
-                        <constraint firstItem="b9t-x6-SsH" firstAttribute="centerY" secondItem="FXu-y9-8Zr" secondAttribute="centerY" id="5Ve-a2-t4A"/>
-                        <constraint firstItem="FXu-y9-8Zr" firstAttribute="centerY" secondItem="5g2-bn-28F" secondAttribute="centerY" id="Ckc-vz-6r8"/>
-                        <constraint firstAttribute="trailing" secondItem="K1E-x3-Nb5" secondAttribute="trailing" constant="12" id="RDL-MF-FKz"/>
-                        <constraint firstItem="K1E-x3-Nb5" firstAttribute="centerY" secondItem="5g2-bn-28F" secondAttribute="centerY" id="l6l-6D-Bww"/>
-                        <constraint firstItem="b9t-x6-SsH" firstAttribute="leading" secondItem="FXu-y9-8Zr" secondAttribute="trailing" constant="14" id="lry-05-5fN"/>
-                        <constraint firstAttribute="height" constant="50" id="rkr-3i-RoH"/>
-                    </constraints>
-                    <connections>
-                        <outletCollection property="gestureRecognizers" destination="iC3-xH-lfU" appends="YES" id="bGc-l1-N0k"/>
-                    </connections>
-                </view>
                 <view tag="1003" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="VOa-6h-jI8">
-                    <rect key="frame" x="0.0" y="260" width="414" height="50"/>
+                    <rect key="frame" x="0.0" y="209" width="414" height="50"/>
                     <subviews>
                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="network_check" translatesAutoresizingMaskIntoConstraints="NO" id="cfk-0y-tXi">
                             <rect key="frame" x="18" y="14" width="22" height="22"/>
@@ -203,7 +164,7 @@
                     </connections>
                 </view>
                 <view tag="1004" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="G5o-d1-oSc">
-                    <rect key="frame" x="0.0" y="311" width="414" height="50"/>
+                    <rect key="frame" x="0.0" y="260" width="414" height="50"/>
                     <subviews>
                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="device_check" translatesAutoresizingMaskIntoConstraints="NO" id="Iy2-P2-34d">
                             <rect key="frame" x="18" y="14" width="22" height="22"/>
@@ -241,6 +202,45 @@
                         <outletCollection property="gestureRecognizers" destination="61i-dT-pn4" appends="YES" id="Lp2-Wf-IL6"/>
                     </connections>
                 </view>
+                <view tag="1002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5g2-bn-28F">
+                    <rect key="frame" x="0.0" y="323" width="414" height="50"/>
+                    <subviews>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="system_setting" translatesAutoresizingMaskIntoConstraints="NO" id="FXu-y9-8Zr">
+                            <rect key="frame" x="18" y="14" width="22" height="22"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="22" id="H4z-lE-7ew"/>
+                                <constraint firstAttribute="width" constant="22" id="HI9-vl-Sdh"/>
+                            </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="b9t-x6-SsH">
+                            <rect key="frame" x="54" y="14.5" width="35" height="21"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_next" translatesAutoresizingMaskIntoConstraints="NO" id="K1E-x3-Nb5">
+                            <rect key="frame" x="380" y="14" width="22" height="22"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="22" id="JG4-Je-uNK"/>
+                                <constraint firstAttribute="height" constant="22" id="dPr-lS-Z7g"/>
+                            </constraints>
+                        </imageView>
+                    </subviews>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                    <gestureRecognizers/>
+                    <constraints>
+                        <constraint firstItem="FXu-y9-8Zr" firstAttribute="leading" secondItem="5g2-bn-28F" secondAttribute="leading" constant="18" id="0Co-EC-i5W"/>
+                        <constraint firstItem="b9t-x6-SsH" firstAttribute="centerY" secondItem="FXu-y9-8Zr" secondAttribute="centerY" id="5Ve-a2-t4A"/>
+                        <constraint firstItem="FXu-y9-8Zr" firstAttribute="centerY" secondItem="5g2-bn-28F" secondAttribute="centerY" id="Ckc-vz-6r8"/>
+                        <constraint firstAttribute="trailing" secondItem="K1E-x3-Nb5" secondAttribute="trailing" constant="12" id="RDL-MF-FKz"/>
+                        <constraint firstItem="K1E-x3-Nb5" firstAttribute="centerY" secondItem="5g2-bn-28F" secondAttribute="centerY" id="l6l-6D-Bww"/>
+                        <constraint firstItem="b9t-x6-SsH" firstAttribute="leading" secondItem="FXu-y9-8Zr" secondAttribute="trailing" constant="14" id="lry-05-5fN"/>
+                        <constraint firstAttribute="height" constant="50" id="rkr-3i-RoH"/>
+                    </constraints>
+                    <connections>
+                        <outletCollection property="gestureRecognizers" destination="iC3-xH-lfU" appends="YES" id="bGc-l1-N0k"/>
+                    </connections>
+                </view>
             </subviews>
             <color key="backgroundColor" red="0.96862745098039216" green="0.96862745098039216" blue="0.97647058823529409" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
             <constraints>
@@ -248,15 +248,15 @@
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="G5o-d1-oSc" secondAttribute="trailing" id="2nF-c5-bSE"/>
                 <constraint firstItem="VOa-6h-jI8" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="Azv-6a-lFX"/>
                 <constraint firstItem="1oP-yz-cWd" firstAttribute="top" secondItem="vUN-kp-3ea" secondAttribute="top" id="Gze-Nu-xTh"/>
+                <constraint firstItem="5g2-bn-28F" firstAttribute="top" secondItem="G5o-d1-oSc" secondAttribute="bottom" constant="13" id="Jz8-WW-oFx"/>
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="1oP-yz-cWd" secondAttribute="trailing" id="SDq-mu-UEV"/>
-                <constraint firstItem="VOa-6h-jI8" firstAttribute="top" secondItem="5g2-bn-28F" secondAttribute="bottom" constant="13" id="W4T-yR-Lbg"/>
                 <constraint firstItem="BhJ-L6-knh" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="Xii-NH-mg6"/>
                 <constraint firstItem="1oP-yz-cWd" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="bJh-8e-dRX"/>
                 <constraint firstItem="5g2-bn-28F" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="eMM-KE-11P"/>
-                <constraint firstItem="5g2-bn-28F" firstAttribute="top" secondItem="BhJ-L6-knh" secondAttribute="bottom" constant="1" id="fxn-hT-sA3"/>
                 <constraint firstAttribute="trailing" secondItem="VOa-6h-jI8" secondAttribute="trailing" id="iXw-nU-GEr"/>
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="BhJ-L6-knh" secondAttribute="trailing" id="jPb-j5-h25"/>
                 <constraint firstItem="BhJ-L6-knh" firstAttribute="top" secondItem="1oP-yz-cWd" secondAttribute="bottom" constant="10" id="rUY-Mr-jHe"/>
+                <constraint firstItem="VOa-6h-jI8" firstAttribute="top" secondItem="BhJ-L6-knh" secondAttribute="bottom" constant="13" id="tN7-5w-14J"/>
                 <constraint firstItem="G5o-d1-oSc" firstAttribute="top" secondItem="VOa-6h-jI8" secondAttribute="bottom" constant="1" id="uwF-lJ-3hs"/>
                 <constraint firstItem="G5o-d1-oSc" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="xq3-fd-6vy"/>
             </constraints>