Sfoglia il codice sorgente

声部示意图开启和关闭

Steven 4 anni fa
parent
commit
91041ffe71
36 ha cambiato i file con 180 aggiunte e 328 eliminazioni
  1. 6 0
      MusicGradeExam/MusicGradeExam.xcodeproj/project.pbxproj
  2. 0 22
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ Drum.imageset/Contents.json
  3. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ Drum.imageset/image_ Drum@2x.png
  4. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ Drum.imageset/image_ Drum@3x.png
  5. 0 22
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ Zheng.imageset/Contents.json
  6. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ Zheng.imageset/image_ Zheng@2x.png
  7. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ Zheng.imageset/image_ Zheng@3x.png
  8. 0 22
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ contrabass.imageset/Contents.json
  9. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ contrabass.imageset/image_ contrabass@2x.png
  10. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ contrabass.imageset/image_ contrabass@3x.png
  11. 0 22
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ trombone.imageset/Contents.json
  12. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ trombone.imageset/image_ trombone@2x.png
  13. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ trombone.imageset/image_ trombone@3x.png
  14. 0 22
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ violoncello.imageset/Contents.json
  15. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ violoncello.imageset/image_ violoncello@2x.png
  16. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ violoncello.imageset/image_ violoncello@3x.png
  17. 0 22
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_dulcimer.imageset/Contents.json
  18. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_dulcimer.imageset/image_dulcimer@2x.png
  19. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_dulcimer.imageset/image_dulcimer@3x.png
  20. 0 22
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_piano.imageset/Contents.json
  21. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_piano.imageset/image_piano@2x.png
  22. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_piano.imageset/image_piano@3x.png
  23. 0 22
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_sax.imageset/Contents.json
  24. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_sax.imageset/image_sax@2x.png
  25. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_sax.imageset/image_sax@3x.png
  26. 0 22
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_sideDrum.imageset/Contents.json
  27. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_sideDrum.imageset/image_sideDrum@2x.png
  28. BIN
      MusicGradeExam/MusicGradeExam/Assets.xcassets/image_sideDrum.imageset/image_sideDrum@3x.png
  29. 10 10
      MusicGradeExam/MusicGradeExam/Define/PrefixHeader.pch
  30. 23 1
      MusicGradeExam/MusicGradeExam/UI/Classroom/Controller/ClassroomViewController.m
  31. 23 0
      MusicGradeExam/MusicGradeExam/UI/Classroom/Model/SubjectImageModel.h
  32. 63 0
      MusicGradeExam/MusicGradeExam/UI/Classroom/Model/SubjectImageModel.m
  33. 3 1
      MusicGradeExam/MusicGradeExam/UI/Classroom/View/MainContainer/ClassroomMainContainer.h
  34. 18 52
      MusicGradeExam/MusicGradeExam/UI/Classroom/View/MainContainer/ClassroomMainContainer.m
  35. 4 2
      MusicGradeExam/MusicGradeExam/UI/Classroom/View/TitleView/ClassTitleView.h
  36. 30 64
      MusicGradeExam/MusicGradeExam/UI/Classroom/View/TitleView/ClassTitleView.m

+ 6 - 0
MusicGradeExam/MusicGradeExam.xcodeproj/project.pbxproj

@@ -354,6 +354,7 @@
 		27DBF9D624DAAE6200202145 /* WaitExamBottomView.m in Sources */ = {isa = PBXBuildFile; fileRef = 27DBF9D524DAAE6100202145 /* WaitExamBottomView.m */; };
 		27DBF9D824DAAE7500202145 /* WaitExamBottomView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 27DBF9D724DAAE7500202145 /* WaitExamBottomView.xib */; };
 		27E32B0224F4DF0D0007CA8F /* RongRTCLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27E32B0124F4DF0D0007CA8F /* RongRTCLib.framework */; };
+		27E32B0A24FE41B50007CA8F /* SubjectImageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 27E32B0924FE41B30007CA8F /* SubjectImageModel.m */; };
 		27EF3EEE24BEE35E002068A2 /* MessageListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 27EF3EED24BEE35E002068A2 /* MessageListModel.m */; };
 		27EF3EF224BEE885002068A2 /* NotifyMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 27EF3EF024BEE885002068A2 /* NotifyMessageCell.m */; };
 		27EF3EF324BEE885002068A2 /* NotifyMessageCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 27EF3EF124BEE885002068A2 /* NotifyMessageCell.xib */; };
@@ -1040,6 +1041,8 @@
 		27DBF9D724DAAE7500202145 /* WaitExamBottomView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = WaitExamBottomView.xib; sourceTree = "<group>"; };
 		27E32B0024ECD9910007CA8F /* 酷乐秀.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "酷乐秀.entitlements"; sourceTree = "<group>"; };
 		27E32B0124F4DF0D0007CA8F /* RongRTCLib.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RongRTCLib.framework; sourceTree = "<group>"; };
+		27E32B0824FE41B30007CA8F /* SubjectImageModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SubjectImageModel.h; sourceTree = "<group>"; };
+		27E32B0924FE41B30007CA8F /* SubjectImageModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SubjectImageModel.m; sourceTree = "<group>"; };
 		27EF3EEC24BEE35E002068A2 /* MessageListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageListModel.h; sourceTree = "<group>"; };
 		27EF3EED24BEE35E002068A2 /* MessageListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageListModel.m; sourceTree = "<group>"; };
 		27EF3EEF24BEE885002068A2 /* NotifyMessageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NotifyMessageCell.h; sourceTree = "<group>"; };
@@ -1619,6 +1622,8 @@
 				27EF3F0724C02B3E002068A2 /* LocalRenderManager.m */,
 				2747701324BC0C0100181362 /* RoomLoginHelper.h */,
 				2747701424BC0C0100181362 /* RoomLoginHelper.m */,
+				27E32B0824FE41B30007CA8F /* SubjectImageModel.h */,
+				27E32B0924FE41B30007CA8F /* SubjectImageModel.m */,
 			);
 			path = Model;
 			sourceTree = "<group>";
@@ -3079,6 +3084,7 @@
 				274771E024BC0C0500181362 /* Classroom.m in Sources */,
 				2747719F24BC0C0500181362 /* SCIndexViewConfiguration.m in Sources */,
 				2747720D24BC0C0500181362 /* UIView+AddConstraints.m in Sources */,
+				27E32B0A24FE41B50007CA8F /* SubjectImageModel.m in Sources */,
 				2729F7EA24C8328700E1F3C4 /* RecordBodyView.m in Sources */,
 				274771BC24BC0C0500181362 /* ALCalendarCollectionView.m in Sources */,
 				27EF3EF224BEE885002068A2 /* NotifyMessageCell.m in Sources */,

+ 0 - 22
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ Drum.imageset/Contents.json

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

BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ Drum.imageset/image_ Drum@2x.png


BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ Drum.imageset/image_ Drum@3x.png


+ 0 - 22
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ Zheng.imageset/Contents.json

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

BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ Zheng.imageset/image_ Zheng@2x.png


BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ Zheng.imageset/image_ Zheng@3x.png


+ 0 - 22
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ contrabass.imageset/Contents.json

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

BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ contrabass.imageset/image_ contrabass@2x.png


BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ contrabass.imageset/image_ contrabass@3x.png


+ 0 - 22
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ trombone.imageset/Contents.json

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

BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ trombone.imageset/image_ trombone@2x.png


BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ trombone.imageset/image_ trombone@3x.png


+ 0 - 22
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ violoncello.imageset/Contents.json

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

BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ violoncello.imageset/image_ violoncello@2x.png


BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_ violoncello.imageset/image_ violoncello@3x.png


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

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

BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_dulcimer.imageset/image_dulcimer@2x.png


BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_dulcimer.imageset/image_dulcimer@3x.png


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

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

BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_piano.imageset/image_piano@2x.png


BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_piano.imageset/image_piano@3x.png


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

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

BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_sax.imageset/image_sax@2x.png


BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_sax.imageset/image_sax@3x.png


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

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

BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_sideDrum.imageset/image_sideDrum@2x.png


BIN
MusicGradeExam/MusicGradeExam/Assets.xcassets/image_sideDrum.imageset/image_sideDrum@3x.png


+ 10 - 10
MusicGradeExam/MusicGradeExam/Define/PrefixHeader.pch

@@ -85,11 +85,11 @@
 
 //#ifdef DEBUG
 
-//#define hostURL (@"https://test.kj.colexiu.com")
-//#define SEALCLASSHOST (@"https://test.kj.colexiu.com/api-im")
-//#define WEBHOST (@"https://test.m.kj.colexiu.com")
-//#define JSPUSH_ENVIRONMENT (NO)
-//#define RCIM_KEY (@"mgb7ka1nme0yg")
+#define hostURL (@"https://test.kj.colexiu.com")
+#define SEALCLASSHOST (@"https://test.kj.colexiu.com/api-im")
+#define WEBHOST (@"https://test.m.kj.colexiu.com")
+#define JSPUSH_ENVIRONMENT (NO)
+#define RCIM_KEY (@"mgb7ka1nme0yg")
 
 //#define hostURL (@"http://192.168.3.28:8000")
 //#define SEALCLASSHOST (@"http://192.168.3.28:8000/api-im")
@@ -105,11 +105,11 @@
 
 //#else    // 线上
 
-#define hostURL (@"https://kj.colexiu.com")
-#define SEALCLASSHOST (@"https://kj.colexiu.com/api-im")
-#define WEBHOST (@"https://m.kj.colexiu.com")
-#define JSPUSH_ENVIRONMENT (YES)
-#define RCIM_KEY (@"8w7jv4qb8zuyy")
+//#define hostURL (@"https://kj.colexiu.com")
+//#define SEALCLASSHOST (@"https://kj.colexiu.com/api-im")
+//#define WEBHOST (@"https://m.kj.colexiu.com")
+//#define JSPUSH_ENVIRONMENT (YES)
+//#define RCIM_KEY (@"8w7jv4qb8zuyy")
 
 //#endif
 

+ 23 - 1
MusicGradeExam/MusicGradeExam/UI/Classroom/Controller/ClassroomViewController.m

@@ -25,6 +25,7 @@
 #import "UIViewController+zhStatusBarStyle.h"
 #import "KSTipsView.h"
 #import "RoomLoginHelper.h"
+#import "SubjectImageModel.h"
 
 #define TitleViewHeight  (64)
 
@@ -55,6 +56,8 @@ typedef NS_ENUM(NSInteger, KICKTYPE) {
 
 @property (nonatomic, assign) KICKTYPE kickType; // 退出状态
 
+@property (nonatomic, strong) SubjectImageModel *guideImageModel;
+
 @end
 
 @implementation ClassroomViewController
@@ -216,6 +219,12 @@ typedef NS_ENUM(NSInteger, KICKTYPE) {
             [[RTCService sharedInstance] switchCamera];
         }
             break;
+        case ClassTitleViewActionTagGuide: // 声部示意图
+        {
+            button.selected = !button.selected;
+            self.containerView.hiddenGuideImage = button.selected;
+        }
+            break;
         case ClassTitleViewActionTagHangup:
         {
             [KSNormalAlertView ks_showAlertWithTitle:@"确认退出考场吗?" leftTitle:@"取消" rightTitle:@"确认" cancel:^{
@@ -293,6 +302,10 @@ typedef NS_ENUM(NSInteger, KICKTYPE) {
         [LocalRenderManager shareInstance].hadRenderMainView = NO;
         [self publishStream];
         [self bindDelegates];
+        // 重置声部示意图
+        self.titleView.guideBtn.selected = NO;
+        self.containerView.hiddenGuideImage = NO;
+
         [self.titleView refreshTitleView];
         [self.hud hideAnimated:YES];
         [RCRTCEngine sharedInstance].monitorDelegate = self;
@@ -658,6 +671,14 @@ typedef NS_ENUM(NSInteger, KICKTYPE) {
 }
 
 #pragma mark - Getters & setters
+- (SubjectImageModel *)guideImageModel {
+    if (!_guideImageModel) {
+        _guideImageModel = [[SubjectImageModel alloc] init];
+        _guideImageModel.subjectName = self.subjectName;
+    }
+    return _guideImageModel;
+}
+
 - (KSTipsView *)tipsView {
     if (!_tipsView) {
         _tipsView = [[KSTipsView alloc] initWithFrame:CGRectZero];
@@ -668,6 +689,7 @@ typedef NS_ENUM(NSInteger, KICKTYPE) {
 - (ClassTitleView *)titleView {
     if (!_titleView) {
         _titleView = [[ClassTitleView alloc] initWithFrame:CGRectMake(iPhoneXSafeTopMargin, 0, kScreenWidth - iPhoneXSafeTopMargin - iPhoneXSafeBottomMargin, TitleViewHeight)];
+        _titleView.hasGuideImage = self.guideImageModel.hasImage;
     }
     return _titleView;
 }
@@ -690,7 +712,7 @@ typedef NS_ENUM(NSInteger, KICKTYPE) {
 - (ClassroomMainContainer *)containerView {
     if (!_containerView) {
         _containerView = [[ClassroomMainContainer alloc] initWithFrame:[self mainContainerViewFrame]];
-        _containerView.subjectName = self.subjectName;
+        _containerView.subjectImage = self.guideImageModel.guideImage;
     }
     return _containerView;
 }

+ 23 - 0
MusicGradeExam/MusicGradeExam/UI/Classroom/Model/SubjectImageModel.h

@@ -0,0 +1,23 @@
+//
+//  SubjectImageModel.h
+//  MusicGradeExam
+//
+//  Created by Kyle on 2020/9/1.
+//  Copyright © 2020 DayaMusic. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SubjectImageModel : NSObject
+
+@property (nonatomic, strong) NSString *subjectName;
+
+@property (nonatomic, assign) BOOL hasImage;
+
+@property (nonatomic, strong) NSString *guideImage;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 63 - 0
MusicGradeExam/MusicGradeExam/UI/Classroom/Model/SubjectImageModel.m

@@ -0,0 +1,63 @@
+//
+//  SubjectImageModel.m
+//  MusicGradeExam
+//
+//  Created by Kyle on 2020/9/1.
+//  Copyright © 2020 DayaMusic. All rights reserved.
+//
+
+#import "SubjectImageModel.h"
+
+@implementation SubjectImageModel
+
+- (void)setSubjectName:(NSString *)subjectName {
+    _subjectName = subjectName;
+    self.hasImage = YES;
+    if ([subjectName isEqualToString:@"钢琴"]) {
+        self.guideImage = @"image_piano";
+    }
+    else if ([subjectName isEqualToString:@"萨克斯"]) {
+        self.guideImage = @"image_sax";
+    }
+    else if ([subjectName isEqualToString:@"长号"]) {
+        self.guideImage = @"image_trombone";
+    }
+    else if ([subjectName isEqualToString:@"古筝"]) {
+        self.guideImage = @"image_Zheng";
+    }
+    else if ([subjectName isEqualToString:@"低音提琴"]) {
+        self.guideImage = @"image_contrabass";
+    }
+    else if ([subjectName isEqualToString:@"小鼓"]) {
+        self.guideImage = @"image_sideDrum";
+    }
+    else if ([subjectName isEqualToString:@"架子鼓"]) {
+        self.guideImage = @"image_Drum";
+    }
+    else if ([subjectName isEqualToString:@"扬琴"]) {
+        self.guideImage = @"image_dulcimer";
+    }
+    else if ([subjectName isEqualToString:@"大提琴"]) {
+        self.guideImage = @"image_violoncello";
+    }
+    else if ([subjectName isEqualToString:@"单簧管"] || [subjectName isEqualToString:@"双簧管"]) {
+        self.guideImage = @"image_clarinet";
+    }
+    else if ([subjectName isEqualToString:@"小提琴"] || [subjectName isEqualToString:@"中提琴"]) {
+        self.guideImage = @"image_violin";
+    }
+    else if ([subjectName isEqualToString:@"长笛"] || [subjectName isEqualToString:@"大管"] || [subjectName isEqualToString:@"小号"] || [subjectName isEqualToString:@"笙"] || [subjectName isEqualToString:@"笛子"]) {
+        self.guideImage = @"image_flute";
+    }
+    else if ([subjectName isEqualToString:@"圆号"] || [subjectName isEqualToString:@"大号"] || [subjectName isEqualToString:@"上低音号"] || [subjectName isEqualToString:@"手风琴"] || [subjectName isEqualToString:@"古典吉他"] || [subjectName isEqualToString:@"中阮"] || [subjectName isEqualToString:@"琵琶"] || [subjectName isEqualToString:@"二胡"]) {
+        self.guideImage = @"image_tuba";
+    }
+    else {
+        self.guideImage = @"";
+        self.hasImage = NO;
+    }
+    
+}
+
+
+@end

+ 3 - 1
MusicGradeExam/MusicGradeExam/UI/Classroom/View/MainContainer/ClassroomMainContainer.h

@@ -24,12 +24,14 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic, strong) RoomMember *member;
 
-@property (nonatomic, strong) NSString *subjectName;
+@property (nonatomic, strong) NSString *subjectImage;
 
 @property (nonatomic, assign, readonly) BOOL isFullScreen;
 
 @property (nonatomic, readonly) CGRect currentVideoFrame;
 
+@property (nonatomic, assign) BOOL hiddenGuideImage;
+
 - (void)didChangeRole:(Role)role;
 
 - (void)containerViewRenderView:(RoomMember *)member;

+ 18 - 52
MusicGradeExam/MusicGradeExam/UI/Classroom/View/MainContainer/ClassroomMainContainer.m

@@ -63,18 +63,30 @@
     self.videoBackView.hidden = YES;
 }
 
-- (void)setSubjectName:(NSString *)subjectName {
-    _subjectName = subjectName;
-    NSString *imgName = [self getGuideImage:subjectName];
-    if (![NSString isEmptyString:imgName]) {
-       self.tipsImage.hidden = NO;
-        [self.tipsImage setImage:[UIImage imageNamed:imgName]];
+- (void)setSubjectImage:(NSString *)subjectImage {
+    _subjectImage = subjectImage;
+    if ([NSString isEmptyString:subjectImage]) {
+        self.tipsImage.hidden = YES;
     }
     else {
+        self.tipsImage.hidden = NO;
+        [self.tipsImage setImage:[UIImage imageNamed:subjectImage]];
+    }
+}
+
+- (void)setHiddenGuideImage:(BOOL)hiddenGuideImage {
+    _hiddenGuideImage = hiddenGuideImage;
+    if (hiddenGuideImage) {
         self.tipsImage.hidden = YES;
     }
+    else {
+        if (![NSString isEmptyString:self.subjectImage]) {
+            self.tipsImage.hidden = NO;
+        }
+    }
 }
 
+
 #pragma mark - private method
 
 - (void)updateVideoViewFrame:(BOOL)isFull {
@@ -164,52 +176,6 @@
     return _tipsImage;
 }
 
-#pragma mark ----- 获取引导图
-- (NSString *)getGuideImage:(NSString *)subjectName {
-    if ([subjectName isEqualToString:@"钢琴"]) {
-        return @"image_piano";
-    }
-    else if ([subjectName isEqualToString:@"萨克斯"]) {
-        return @"image_sax";
-    }
-    else if ([subjectName isEqualToString:@"长号"]) {
-        return @"image_trombone";
-    }
-    else if ([subjectName isEqualToString:@"古筝"]) {
-        return @"image_Zheng";
-    }
-    else if ([subjectName isEqualToString:@"低音提琴"]) {
-        return @"image_contrabass";
-    }
-    else if ([subjectName isEqualToString:@"小鼓"]) {
-        return @"image_sideDrum";
-    }
-    else if ([subjectName isEqualToString:@"架子鼓"]) {
-        return @"image_Drum";
-    }
-    else if ([subjectName isEqualToString:@"扬琴"]) {
-        return @"image_dulcimer";
-    }
-    else if ([subjectName isEqualToString:@"大提琴"]) {
-        return @"image_violoncello";
-    }
-    else if ([subjectName isEqualToString:@"单簧管"] || [subjectName isEqualToString:@"双簧管"]) {
-        return @"image_clarinet";
-    }
-    else if ([subjectName isEqualToString:@"小提琴"] || [subjectName isEqualToString:@"中提琴"]) {
-        return @"image_violin";
-    }
-    else if ([subjectName isEqualToString:@"长笛"] || [subjectName isEqualToString:@"大管"] || [subjectName isEqualToString:@"小号"] || [subjectName isEqualToString:@"笙"] || [subjectName isEqualToString:@"笛子"]) {
-        return @"image_flute";
-    }
-    else if ([subjectName isEqualToString:@"圆号"] || [subjectName isEqualToString:@"大号"] || [subjectName isEqualToString:@"上低音号"] || [subjectName isEqualToString:@"手风琴"] || [subjectName isEqualToString:@"古典吉他"] || [subjectName isEqualToString:@"中阮"] || [subjectName isEqualToString:@"琵琶"] || [subjectName isEqualToString:@"二胡"]) {
-        return @"image_tuba";
-    }
-    else {
-        return @"";
-    }
-}
-
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 4 - 2
MusicGradeExam/MusicGradeExam/UI/Classroom/View/TitleView/ClassTitleView.h

@@ -12,6 +12,7 @@ typedef NS_ENUM(NSInteger, ClassTitleViewActionTag) {
     ClassTitleViewActionTagSwitchCamera,
     ClassTitleViewActionTagMicrophone,
     ClassTitleViewActionTagCamera,
+    ClassTitleViewActionTagGuide,  
     ClassTitleViewActionTagChat,
     ClassTitleViewActionTagHangup,
 };
@@ -49,14 +50,15 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic, strong) UIButton *switchLineBtn;
 
+@property (nonatomic, strong) UIButton *guideBtn;
+
 @property (nonatomic, strong) UIButton *hangupBtn;
 
 @property (nonatomic, assign) BOOL isDisplay;
 
-//@property (nonatomic, strong) UILabel *onShowLabel;
-
 @property (nonatomic, assign) NetWorkingStatus netStatus;
 
+@property (nonatomic, assign) BOOL hasGuideImage;
 - (void)refreshTitleView;
 
 - (void)stopDurationTimer;

+ 30 - 64
MusicGradeExam/MusicGradeExam/UI/Classroom/View/TitleView/ClassTitleView.m

@@ -24,18 +24,14 @@
 
 @interface ClassTitleView ()
 
-//@property (nonatomic, strong) UILabel *timeLable;
 @property (nonatomic, strong) NSTimer *timeTimer;
 @property (nonatomic, strong) NSMutableArray *buttonArray;
 @property (nonatomic, strong) NSArray *buttonImageArray;
 @property (nonatomic, strong) NSArray *buttonHighlightedImageArray;
 @property (nonatomic, strong) NSArray *buttonCloseImageArray;
-@property (nonatomic, assign) NSInteger duration;
 
 @property (nonatomic, assign) NSInteger hiddenDuration;
 
-@property (nonatomic, assign) BOOL isCountDown;
-
 @end
 
 @implementation ClassTitleView
@@ -48,8 +44,6 @@
         self.backgroundColor = [HexRGB(0x141414) colorWithAlphaComponent:0.74];
         [self.buttonArray addObjectsFromArray:@[self.switchLineBtn,self.switchCameraBtn,self.microphoneBtn,self.cameraBtn,self.hangupBtn]];
         [self addSubviews];
-        self.isCountDown = NO;
-        self.duration = [ClassroomService sharedService].currentRoom.surplusTime;
         [self refreshTitleView];
         [self.timeTimer setFireDate:[NSDate distantPast]];
     }
@@ -58,13 +52,11 @@
 
 - (void)addSubviews {
     [self addSubview:self.signalImageView];
-//    [self addSubview:self.timeLable];
     [self addSubview:self.switchLineBtn];
     [self addSubview:self.switchCameraBtn];
     [self addSubview:self.microphoneBtn];
     [self addSubview:self.cameraBtn];
-//    [self addSubview:self.onShowLabel];
-    
+    [self addSubview:self.guideBtn];
     [self addSubview:self.hangupBtn];
     CGFloat topOffset = (self.bounds.size.height - TButtonWidth) / 2.0;
     
@@ -74,12 +66,6 @@
         make.width.mas_equalTo(TSignalImageViewWidth);
         make.height.mas_equalTo(TSignalImageViewWidth);
     }];
-//    [self.timeLable mas_makeConstraints:^(MASConstraintMaker *make) {
-//        make.left.equalTo(self.signalImageView.mas_right).offset(20);
-//        make.centerY.equalTo(self.mas_centerY);
-//        make.width.equalTo(@TTimeLableWidth);
-//        make.height.equalTo(@TTimeLableHeight);
-//    }];
     
     // 切换线路
     [self.switchLineBtn mas_makeConstraints:^(MASConstraintMaker *make) {
@@ -110,14 +96,13 @@
         make.height.mas_equalTo(TButtonWidth);
         make.top.mas_equalTo(self.mas_top).offset(topOffset);
     }];
-    
-    // 演示label
-//    [self.onShowLabel mas_makeConstraints:^(MASConstraintMaker *make) {
-//        make.left.mas_equalTo(self.cameraBtn.mas_right).offset(TButtonSpace * 2);
-//        make.width.mas_equalTo(120);
-//        make.height.mas_equalTo(TButtonWidth);
-//        make.top.mas_equalTo(self.mas_top).offset(topOffset);
-//    }];
+    // 声部示意图
+    [self.guideBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(self.cameraBtn.mas_right).offset(TButtonSpace);
+        make.width.mas_equalTo(80);
+        make.height.mas_equalTo(TButtonWidth);
+        make.top.mas_equalTo(self.mas_top).offset(topOffset);
+    }];
     
     // 退出
     [self.hangupBtn mas_makeConstraints:^(MASConstraintMaker *make) {
@@ -160,12 +145,13 @@
     }];
 }
 
-- (void)setDuration:(NSInteger)duration {
-    _duration = duration;
-    if (_duration < 300 && self.isCountDown == NO) {
-        self.isCountDown = YES;
-//        self.timeLable.textColor = HexRGB(0x2DC7AA);
-//        [self.timeLable.layer addAnimation:[self opacityForeverAnimation:0.5f] forKey:nil];
+- (void)setHasGuideImage:(BOOL)hasGuideImage {
+    _hasGuideImage = hasGuideImage;
+    if (hasGuideImage) {
+        self.guideBtn.hidden = NO;
+    }
+    else {
+        self.guideBtn.hidden = YES;
     }
 }
 
@@ -182,7 +168,6 @@
         }
     }
     
-//    self.timeLable.text = [self formatJoinTime];
     if (self.delegate && [self.delegate respondsToSelector:@selector(refreshClassStatus)]) {
         [self.delegate refreshClassStatus];
     }
@@ -246,7 +231,7 @@
 }
 
 - (void)setDefaultButtons {
-    self.buttonImageArray = @[@"line_switch",@"camera_switch", @"userMic_on", @"userCamera_on",@"class_hangUp"];
+    self.buttonImageArray = @[@"line_switch",@"camera_switch", @"userMic_on", @"userCamera_on", @"class_hangUp"];
     self.buttonCloseImageArray = @[@"line_switch",@"camera_switch", @"userMic_off", @"userCamera_off", @"class_hangUp"];
 
     for(int i = 0; i < self.buttonArray.count; i++) {
@@ -257,21 +242,6 @@
     }
 }
 
-- (NSString *)formatJoinTime {
-    if (self.duration <= 0) {
-        return @"00:00:00";
-    }
-    NSInteger durationInteger = self.duration--;
-    NSInteger durationS = durationInteger % 60;
-    NSInteger durationM = ((durationInteger - durationS) / 60) % 60;
-    NSInteger durationH = (durationInteger - durationS - 60 * durationM) / 3600;
-    NSMutableArray * durationArr = [NSMutableArray new];
-    [durationArr addObject:[NSString stringWithFormat:@"%02ld", durationH]];
-    [durationArr addObject:[NSString stringWithFormat:@"%02ld", durationM]];
-    [durationArr addObject:[NSString stringWithFormat:@"%02ld", durationS]];
-    return [durationArr componentsJoinedByString:@":"];
-}
-
 - (UIImageView *)signalImageView {
     if(!_signalImageView) {
         _signalImageView = [[UIImageView alloc] init];
@@ -280,15 +250,6 @@
     return _signalImageView;
 }
 
-//- (UILabel *)timeLable {
-//    if(!_timeLable) {
-//        _timeLable = [[UILabel alloc] init];
-//        _timeLable.font = [UIFont systemFontOfSize:14];
-//        _timeLable.textColor = [UIColor colorWithHexString:@"FFFFFF" alpha:1];
-//    }
-//    return _timeLable;
-//}
-
 - (UIButton *)switchLineBtn {
     if (!_switchLineBtn) {
         _switchLineBtn = [[UIButton alloc] init];
@@ -333,15 +294,20 @@
     return _cameraBtn;
 }
 
-//- (UILabel *)onShowLabel {
-//    if (!_onShowLabel) {
-//        _onShowLabel = [[UILabel alloc] init];
-//        _onShowLabel.textColor = HexRGB(0xf9f9f9);
-//        _onShowLabel.font = [UIFont systemFontOfSize:14.0f];
-//        _onShowLabel.text = @"您已进入演示模式";
-//    }
-//    return _onShowLabel;
-//}
+- (UIButton *)guideBtn {
+    if (!_guideBtn) {
+        _guideBtn = [[UIButton alloc] init];
+        _guideBtn.enabled = YES;
+        _guideBtn.tag = ClassTitleViewActionTagGuide;
+        _guideBtn.backgroundColor = THEMECOLOR;
+        [_guideBtn setTitle:@"关闭示意图" forState:UIControlStateNormal];
+        [_guideBtn setTitle:@"开启示意图" forState:UIControlStateSelected];
+        _guideBtn.layer.cornerRadius = 12.0f;
+        _guideBtn.titleLabel.font = [UIFont systemFontOfSize:12.0f];
+        [_guideBtn addTarget:self action:@selector(tapEvent:) forControlEvents:UIControlEventTouchUpInside];
+    }
+    return _guideBtn;
+}
 
 
 - (UIButton *)hangupBtn {