Steven vor 3 Jahren
Ursprung
Commit
168aa341dd
18 geänderte Dateien mit 169 neuen und 39 gelöschten Zeilen
  1. 6 0
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. BIN
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  3. 0 16
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/group_owner.imageset/Contents.json
  5. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/group_owner.imageset/group_owner@2x.png
  6. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/group_owner.imageset/group_owner@3x.png
  7. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/group_ownerList.imageset/Contents.json
  8. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/group_ownerList.imageset/group_ownerList@2x.png
  9. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/group_ownerList.imageset/group_ownerList@3x.png
  10. 4 2
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSRCIMDataSource.m
  11. 14 14
      KulexiuForTeacher/KulexiuForTeacher/Common/Define/PrefixHeader.pch
  12. 27 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSChatConversationViewController.m
  13. 3 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/GroupMemberViewController.m
  14. 3 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/GroupSettingViewController.m
  15. 15 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/View/GroupMemberListCell.m
  16. 17 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/View/GroupMemberListCell.xib
  17. 16 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/View/KSGroupTagImageView.h
  18. 20 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/View/KSGroupTagImageView.m

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

@@ -862,6 +862,7 @@
 		BCDBC59D286156E700647197 /* LiveRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCDBC59C286156E700647197 /* LiveRoomViewController.m */; };
 		BCDBC5A028615E0300647197 /* HomeTopView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCDBC59F28615E0300647197 /* HomeTopView.m */; };
 		BCDE358A2897B48E00A9A560 /* shareImage@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = BCDE35892897B48E00A9A560 /* shareImage@2x.png */; };
+		BCDE3591289A7E4900A9A560 /* KSGroupTagImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCDE358F289A7E4900A9A560 /* KSGroupTagImageView.m */; };
 		BCE06F2B2818146700234817 /* KSConfirmAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCE06F2A2818146700234817 /* KSConfirmAlertView.m */; };
 		BCE06F2D2818147000234817 /* KSConfirmAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCE06F2C2818147000234817 /* KSConfirmAlertView.xib */; };
 		BCE6A07F27F7FACA00C97704 /* UIView+SubViewExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = BCE6A07E27F7FACA00C97704 /* UIView+SubViewExtension.m */; };
@@ -2439,6 +2440,8 @@
 		BCDBC59E28615E0300647197 /* HomeTopView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeTopView.h; sourceTree = "<group>"; };
 		BCDBC59F28615E0300647197 /* HomeTopView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeTopView.m; sourceTree = "<group>"; };
 		BCDE35892897B48E00A9A560 /* shareImage@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shareImage@2x.png"; sourceTree = "<group>"; };
+		BCDE358F289A7E4900A9A560 /* KSGroupTagImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSGroupTagImageView.m; sourceTree = "<group>"; };
+		BCDE3590289A7E4900A9A560 /* KSGroupTagImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSGroupTagImageView.h; sourceTree = "<group>"; };
 		BCE06F292818146700234817 /* KSConfirmAlertView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KSConfirmAlertView.h; sourceTree = "<group>"; };
 		BCE06F2A2818146700234817 /* KSConfirmAlertView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KSConfirmAlertView.m; sourceTree = "<group>"; };
 		BCE06F2C2818147000234817 /* KSConfirmAlertView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KSConfirmAlertView.xib; sourceTree = "<group>"; };
@@ -3957,6 +3960,8 @@
 		2779360527E32BBF0010E277 /* View */ = {
 			isa = PBXGroup;
 			children = (
+				BCDE3590289A7E4900A9A560 /* KSGroupTagImageView.h */,
+				BCDE358F289A7E4900A9A560 /* KSGroupTagImageView.m */,
 				275B16ED27EAF9B10081FDEF /* ChatNavView.h */,
 				275B16EE27EAF9B10081FDEF /* ChatNavView.m */,
 				275B16F027EAF9DD0081FDEF /* ChatNavView.xib */,
@@ -6924,6 +6929,7 @@
 				277931FD27E30FC30010E277 /* AnimationContoller.m in Sources */,
 				277931FC27E30FC30010E277 /* KLTNavigationController.m in Sources */,
 				BC0A22A1284751F80065C1AB /* KSCloseCourseView.m in Sources */,
+				BCDE3591289A7E4900A9A560 /* KSGroupTagImageView.m in Sources */,
 				275E3DBC27F45E750010EC30 /* KSLiveChatroomLeave.m in Sources */,
 				27D83F5127F4036E00062476 /* KSNormalAlertView.m in Sources */,
 				BCED5CB4285083AC009A42DE /* ShareMusicViewController.m in Sources */,

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


+ 0 - 16
KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -259,22 +259,6 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "8E5A7AF7-E94D-4794-B28B-F49874626290"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Chat/Controller/KSChatConversationViewController.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "698"
-            endingLineNumber = "698"
-            landmarkName = "-submitFileWithMessage:uploadListener:"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
             uuid = "FF4ED55F-18BB-41A8-872F-E901507B6160"
             shouldBeEnabled = "No"
             ignoreCount = "0"

+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/group_owner.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/group_owner.imageset/group_owner@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/group_owner.imageset/group_owner@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/group_ownerList.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/group_ownerList.imageset/group_ownerList@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Chat/group_ownerList.imageset/group_ownerList@3x.png


+ 4 - 2
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSRCIMDataSource.m

@@ -113,8 +113,10 @@
         if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
             NSDictionary *result = [dic dictionaryValueForKey:@"data"];
             NSString *name = [result stringValueForKey:@"nickname"];
-            NSDictionary *userDic = [result dictionaryValueForKey:@"user"];
-            RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:userId name:name portrait:[userDic stringValueForKey:@"avatar"]];
+            RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:userId name:name portrait:[result stringValueForKey:@"avatar"]];
+            if ([result boolValueForKey:@"isAdmin"]) {
+                user.extra = @"owner";
+            }
             completion(user);
         }
         else {

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

@@ -116,23 +116,23 @@ shouldPrevent = NO; \
 
 //#ifdef DEBUG
 
-//#define hostURL (@"https://dev.colexiu.com")
-//#define SEALCLASSHOST (@"https://dev.colexiu.com/api-classroom")
-//#define WEBHOST (@"https://dev.colexiu.com/teacher")
-//#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/teacher")
+#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/teacher")
-#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/teacher")
+//#define SOCKET_URL (@"wss://online.colexiu.com/audioAnalysis")
+//#define JSPUSH_ENVIRONMENT (YES)
+//#define RCIM_KEY (@"e5t4ouvpe42pa")
+//#define SUBMIT_UUID (YES)
 
 
 //#endif

+ 27 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSChatConversationViewController.m

@@ -24,7 +24,7 @@
 #import "KSChatMusicMessage.h"
 
 #import "KSPublicAlertView.h"
-
+#import "KSGroupTagImageView.h"
 #define SHARE_MUSIC_TAG (2001)
 
 @interface RCNaviDataInfo : NSObject
@@ -64,7 +64,6 @@
 
 @property (nonatomic, strong) KSPublicAlertView *alertView;
 
-
 @end
 
 @implementation KSChatConversationViewController
@@ -105,7 +104,6 @@
     [self leftRightButton];
     [self refreshUserInfoOrGroupInfo];
     self.isFirstLoad = YES;
-//    [self.chatSessionInputBarControl.pluginBoardView removeItemAtIndex:2];
 }
 
 - (void)viewWillAppear:(BOOL)animated {
@@ -336,8 +334,12 @@
                     GroupMemberModel *model = [[GroupMemberModel alloc] initWithDictionary:parm];
                     // 刷新缓存
                     RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:model.userId name:model.nickname portrait:model.avatar];
+                    if (model.isAdmin) {
+                        user.extra = @"owner";
+                    }
                     [[RCIM sharedRCIM] refreshGroupUserInfoCache:user withUserId:model.userId withGroupId:self.targetId];
                 }
+                [self.conversationMessageCollectionView reloadData];
             }
             else {
                 
@@ -460,6 +462,28 @@
         UIImageView *imageView = (UIImageView *)((RCMessageCell *)cell).portraitImageView;
         imageView.contentMode = UIViewContentModeScaleAspectFill;
         imageView.layer.masksToBounds = YES;
+        
+        if (self.conversationType == ConversationType_GROUP) {
+            UIView *contentView = (UIView *)((RCMessageCell *)cell).messageContentView;
+            RCMessageModel *model = self.conversationDataRepository[indexPath.row];
+            for (UIView *subView in contentView.subviews) {
+                if ([subView isKindOfClass:[KSGroupTagImageView class]]) {
+                    [subView removeFromSuperview];
+                    break;
+                }
+            }
+            RCUserInfo *user = [[RCIM sharedRCIM] getGroupUserInfoCache:model.senderUserId withGroupId:self.targetId];
+            if ([user.extra isEqualToString:@"owner"]) {
+                KSGroupTagImageView *avatarImage = [[KSGroupTagImageView alloc] initWithImage:[UIImage imageNamed:@"group_owner"]];
+                [contentView addSubview:avatarImage];
+                [avatarImage mas_makeConstraints:^(MASConstraintMaker *make) {
+                    make.width.mas_equalTo(36);
+                    make.height.mas_equalTo(16);
+                    make.centerX.mas_equalTo(imageView.mas_centerX);
+                    make.centerY.mas_equalTo(imageView.mas_bottom);
+                }];
+            }
+        }
     }
     
 }

+ 3 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/GroupMemberViewController.m

@@ -56,6 +56,9 @@
                 
                 // 刷新缓存
                 RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:model.userId name:model.nickname portrait:model.avatar];
+                if (model.isAdmin) {
+                    user.extra = @"owner";
+                }
                 [[RCIM sharedRCIM] refreshGroupUserInfoCache:user withUserId:model.userId withGroupId:self.groupId];
             }
             [self evaluateMessge];

+ 3 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/Controller/GroupSettingViewController.m

@@ -115,6 +115,9 @@
                 
                 // 刷新缓存
                 RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:model.userId name:model.nickname portrait:model.avatar];
+                if (model.isAdmin) {
+                    user.extra = @"owner";
+                }
                 [[RCIM sharedRCIM] refreshGroupUserInfoCache:user withUserId:model.userId withGroupId:self.groupId];
             }
             [self evaluateMessge];

+ 15 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/View/GroupMemberListCell.m

@@ -10,6 +10,10 @@
 
 @interface GroupMemberListCell ()
 
+@property (weak, nonatomic) IBOutlet UIImageView *ownerImage;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *ownerWidth;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *nameLeft;
+
 @property (weak, nonatomic) IBOutlet UIImageView *memberLogo;
 
 @property (weak, nonatomic) IBOutlet UILabel *memberName;
@@ -51,6 +55,17 @@
             self.chatButton.hidden = YES;
             self.chatButton.userInteractionEnabled = NO;
         }
+        
+        if (model.isAdmin) {
+            self.nameLeft.constant = 4.0f;
+            self.ownerWidth.constant = 34.0f;
+            self.ownerImage.hidden = NO;
+        }
+        else {
+            self.nameLeft.constant = 0.0f;
+            self.ownerWidth.constant = 0.0f;
+            self.ownerImage.hidden = YES;
+        }
     }
 }
 - (IBAction)chatAction:(id)sender {

+ 17 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Group/View/GroupMemberListCell.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
+        <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"/>
@@ -34,7 +34,7 @@
                                 </userDefinedRuntimeAttributes>
                             </imageView>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="张三" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vhp-Wi-YsA">
-                                <rect key="frame" x="69" y="21" width="33" height="22"/>
+                                <rect key="frame" x="107" y="21" width="33" height="22"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="22" id="Js9-hD-GW8"/>
                                 </constraints>
@@ -54,16 +54,25 @@
                                     <action selector="chatAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="zCp-eY-UZG"/>
                                 </connections>
                             </button>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="group_ownerList" translatesAutoresizingMaskIntoConstraints="NO" id="Nfh-Ew-S6J">
+                                <rect key="frame" x="69" y="23" width="34" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="34" id="BzO-fB-1mA"/>
+                                    <constraint firstAttribute="height" constant="18" id="j6N-l8-9Rq"/>
+                                </constraints>
+                            </imageView>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
                             <constraint firstItem="Vhp-Wi-YsA" firstAttribute="centerY" secondItem="GW3-Oz-aPr" secondAttribute="centerY" id="4jm-Nc-ex4"/>
                             <constraint firstItem="C2d-wO-ajH" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Vhp-Wi-YsA" secondAttribute="trailing" constant="12" id="Aoh-be-l3n"/>
                             <constraint firstItem="GW3-Oz-aPr" firstAttribute="centerY" secondItem="3bd-Vo-rTM" secondAttribute="centerY" id="Mw8-KH-Nlc"/>
+                            <constraint firstItem="Nfh-Ew-S6J" firstAttribute="leading" secondItem="GW3-Oz-aPr" secondAttribute="trailing" constant="11" id="ONQ-qG-Yor"/>
+                            <constraint firstItem="Vhp-Wi-YsA" firstAttribute="leading" secondItem="Nfh-Ew-S6J" secondAttribute="trailing" constant="4" id="ZeM-2h-Bbf"/>
                             <constraint firstAttribute="trailing" secondItem="C2d-wO-ajH" secondAttribute="trailing" constant="14" id="a77-uB-Due"/>
                             <constraint firstItem="C2d-wO-ajH" firstAttribute="centerY" secondItem="Vhp-Wi-YsA" secondAttribute="centerY" id="cZb-Vp-Luy"/>
-                            <constraint firstItem="Vhp-Wi-YsA" firstAttribute="leading" secondItem="GW3-Oz-aPr" secondAttribute="trailing" constant="11" id="eYK-XD-v9I"/>
                             <constraint firstItem="GW3-Oz-aPr" firstAttribute="leading" secondItem="3bd-Vo-rTM" secondAttribute="leading" constant="14" id="g2u-Nh-Bgq"/>
+                            <constraint firstItem="Vhp-Wi-YsA" firstAttribute="centerY" secondItem="Nfh-Ew-S6J" secondAttribute="centerY" id="i5y-pn-1hh"/>
                         </constraints>
                         <userDefinedRuntimeAttributes>
                             <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -85,12 +94,16 @@
                 <outlet property="chatButton" destination="C2d-wO-ajH" id="F2p-LE-BIc"/>
                 <outlet property="memberLogo" destination="GW3-Oz-aPr" id="sPh-qx-eoq"/>
                 <outlet property="memberName" destination="Vhp-Wi-YsA" id="5VD-Ix-Oua"/>
+                <outlet property="nameLeft" destination="ZeM-2h-Bbf" id="b7i-RH-9Rk"/>
+                <outlet property="ownerImage" destination="Nfh-Ew-S6J" id="lQ9-xF-fQe"/>
+                <outlet property="ownerWidth" destination="BzO-fB-1mA" id="Fcm-vU-JYW"/>
             </connections>
             <point key="canvasLocation" x="131.8840579710145" y="63.616071428571423"/>
         </tableViewCell>
     </objects>
     <resources>
         <image name="chat_chat" width="19" height="18"/>
+        <image name="group_ownerList" width="34" height="18"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
         </systemColor>

+ 16 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/View/KSGroupTagImageView.h

@@ -0,0 +1,16 @@
+//
+//  KSGroupTagImageView.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/8/3.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KSGroupTagImageView : UIImageView
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 20 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/View/KSGroupTagImageView.m

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