瀏覽代碼

老师端风采视频查看

Steven 8 月之前
父節點
當前提交
ae9c76ffda
共有 24 個文件被更改,包括 748 次插入58 次删除
  1. 54 0
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/my_stylePlay.imageset/Contents.json
  3. 二進制
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/my_stylePlay.imageset/my_stylePlay@2x.png
  4. 二進制
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/my_stylePlay.imageset/my_stylePlay@3x.png
  5. 33 2
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/AlertView/KSPublicAlertView.m
  6. 24 37
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/AlertView/KSPublicAlertView.xib
  7. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m
  8. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.m
  9. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/VIPCourse/Controller/VipCouseDetailViewController.m
  10. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/Controller/HomeworkDetailViewController.m
  11. 13 8
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Controller/MyStyleViewController.m
  12. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Model/StyleVideoModel.h
  13. 4 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Model/StyleVideoModel.m
  14. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/LiveList/View/LiveListBodyView.m
  15. 3 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/Controller/MinePageViewController.m
  16. 16 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/Controller/MyStyleVideoListController.h
  17. 216 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/Controller/MyStyleVideoListController.m
  18. 31 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/Model/TeacherStyleFlowLayout.h
  19. 140 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/Model/TeacherStyleFlowLayout.m
  20. 19 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/View/MyStyleVideoCollectionViewCell.h
  21. 37 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/View/MyStyleVideoCollectionViewCell.m
  22. 125 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/View/MyStyleVideoCollectionViewCell.xib
  23. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageMienBodyView.m
  24. 4 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/VipCourse/MinePageVIPCourseView.m

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

@@ -947,6 +947,10 @@
 		BCB6340227F6A27100ACFDCF /* OnlineClassManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6340127F6A27100ACFDCF /* OnlineClassManager.m */; };
 		BCB6340927F6A35700ACFDCF /* LiveroomTimeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6340827F6A35700ACFDCF /* LiveroomTimeManager.m */; };
 		BCB635B627F6FB0A00ACFDCF /* SeatTipsView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB635B527F6FB0A00ACFDCF /* SeatTipsView.m */; };
+		BCB6F4522CF57A9F000D8805 /* MyStyleVideoListController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6F4512CF57A9F000D8805 /* MyStyleVideoListController.m */; };
+		BCB6F45A2CF57E4B000D8805 /* MyStyleVideoCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCB6F4592CF57E4B000D8805 /* MyStyleVideoCollectionViewCell.xib */; };
+		BCB6F45B2CF57E4B000D8805 /* MyStyleVideoCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6F4582CF57E4B000D8805 /* MyStyleVideoCollectionViewCell.m */; };
+		BCB6F45E2CF57F13000D8805 /* TeacherStyleFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6F45D2CF57F13000D8805 /* TeacherStyleFlowLayout.m */; };
 		BCB908F72850C6EF00F5FF69 /* MusicChooseCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB908F52850C6EF00F5FF69 /* MusicChooseCell.m */; };
 		BCB908F82850C6EF00F5FF69 /* MusicChooseCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCB908F62850C6EF00F5FF69 /* MusicChooseCell.xib */; };
 		BCB908FB2850C9C300F5FF69 /* MusicChooseSearchView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB908FA2850C9C300F5FF69 /* MusicChooseSearchView.m */; };
@@ -2783,6 +2787,13 @@
 		BCB6340827F6A35700ACFDCF /* LiveroomTimeManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LiveroomTimeManager.m; sourceTree = "<group>"; };
 		BCB635B427F6FB0A00ACFDCF /* SeatTipsView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SeatTipsView.h; sourceTree = "<group>"; };
 		BCB635B527F6FB0A00ACFDCF /* SeatTipsView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SeatTipsView.m; sourceTree = "<group>"; };
+		BCB6F4502CF57A9F000D8805 /* MyStyleVideoListController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyStyleVideoListController.h; sourceTree = "<group>"; };
+		BCB6F4512CF57A9F000D8805 /* MyStyleVideoListController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyStyleVideoListController.m; sourceTree = "<group>"; };
+		BCB6F4572CF57E4B000D8805 /* MyStyleVideoCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyStyleVideoCollectionViewCell.h; sourceTree = "<group>"; };
+		BCB6F4582CF57E4B000D8805 /* MyStyleVideoCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyStyleVideoCollectionViewCell.m; sourceTree = "<group>"; };
+		BCB6F4592CF57E4B000D8805 /* MyStyleVideoCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyStyleVideoCollectionViewCell.xib; sourceTree = "<group>"; };
+		BCB6F45C2CF57F13000D8805 /* TeacherStyleFlowLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TeacherStyleFlowLayout.h; sourceTree = "<group>"; };
+		BCB6F45D2CF57F13000D8805 /* TeacherStyleFlowLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TeacherStyleFlowLayout.m; sourceTree = "<group>"; };
 		BCB908F42850C6EF00F5FF69 /* MusicChooseCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MusicChooseCell.h; sourceTree = "<group>"; };
 		BCB908F52850C6EF00F5FF69 /* MusicChooseCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MusicChooseCell.m; sourceTree = "<group>"; };
 		BCB908F62850C6EF00F5FF69 /* MusicChooseCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MusicChooseCell.xib; sourceTree = "<group>"; };
@@ -3423,6 +3434,7 @@
 		275FA55927F31A7400EB6240 /* MinePage */ = {
 			isa = PBXGroup;
 			children = (
+				BCB6F4562CF57ABE000D8805 /* StyleVideo */,
 				275FA55A27F31A7400EB6240 /* Controller */,
 				275FA55B27F31A7400EB6240 /* Model */,
 				275FA55C27F31A7400EB6240 /* View */,
@@ -7058,6 +7070,44 @@
 			path = TipsView;
 			sourceTree = "<group>";
 		};
+		BCB6F4532CF57ABE000D8805 /* Controller */ = {
+			isa = PBXGroup;
+			children = (
+				BCB6F4502CF57A9F000D8805 /* MyStyleVideoListController.h */,
+				BCB6F4512CF57A9F000D8805 /* MyStyleVideoListController.m */,
+			);
+			path = Controller;
+			sourceTree = "<group>";
+		};
+		BCB6F4542CF57ABE000D8805 /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				BCB6F45C2CF57F13000D8805 /* TeacherStyleFlowLayout.h */,
+				BCB6F45D2CF57F13000D8805 /* TeacherStyleFlowLayout.m */,
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		BCB6F4552CF57ABE000D8805 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				BCB6F4572CF57E4B000D8805 /* MyStyleVideoCollectionViewCell.h */,
+				BCB6F4582CF57E4B000D8805 /* MyStyleVideoCollectionViewCell.m */,
+				BCB6F4592CF57E4B000D8805 /* MyStyleVideoCollectionViewCell.xib */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		BCB6F4562CF57ABE000D8805 /* StyleVideo */ = {
+			isa = PBXGroup;
+			children = (
+				BCB6F4532CF57ABE000D8805 /* Controller */,
+				BCB6F4542CF57ABE000D8805 /* Model */,
+				BCB6F4552CF57ABE000D8805 /* View */,
+			);
+			path = StyleVideo;
+			sourceTree = "<group>";
+		};
 		BCB908FE2851BE8700F5FF69 /* ShareInChat */ = {
 			isa = PBXGroup;
 			children = (
@@ -7964,6 +8014,7 @@
 				BCC408E72AFCE11900C60249 /* MusicPublicContentView.xib in Resources */,
 				BC56C97529238CC300AF301F /* CoursewareAlertView.xib in Resources */,
 				BCC583F528A9FA8100BAB4CF /* cloud_animation_8.png in Resources */,
+				BCB6F45A2CF57E4B000D8805 /* MyStyleVideoCollectionViewCell.xib in Resources */,
 				BCDF820C2A8A2955005F8B82 /* ClassMemberSettingView.xib in Resources */,
 				BCA1134E28A23229007FAFB9 /* HomeHotMusicCellView.xib in Resources */,
 				BC9EFEB82C0480A500CFA7B1 /* StudentChooseDisplayCell.xib in Resources */,
@@ -8509,6 +8560,7 @@
 				BC7CFFB72817E90700CAEB21 /* KSSegView.m in Sources */,
 				BC9AA0C12ABC3C5800CD954D /* ChatComplainBottomView.m in Sources */,
 				BC71DF112A89F470003F165E /* TXMetronomeAlertView.m in Sources */,
+				BCB6F4522CF57A9F000D8805 /* MyStyleVideoListController.m in Sources */,
 				2723B68727F1642B00E0B90B /* HomeBodyView.m in Sources */,
 				BC106B252A8F44F8000759A9 /* TXLiveRoomViewController.m in Sources */,
 				2779320827E30FC30010E277 /* KSAudioRecordManager.m in Sources */,
@@ -8915,6 +8967,7 @@
 				BCD160602CED849300A78B43 /* MyLiveCourseGroupView.m in Sources */,
 				BC106B7E2A8F4586000759A9 /* TXLiveMessageDownSeatAll.m in Sources */,
 				BC9EFEB32C0480A500CFA7B1 /* GroupBanBottomView.m in Sources */,
+				BCB6F45B2CF57E4B000D8805 /* MyStyleVideoCollectionViewCell.m in Sources */,
 				2779320427E30FC30010E277 /* KSHoldButton.m in Sources */,
 				BCF8A6192CF4844E00DA435B /* FansGroupEmptyView.m in Sources */,
 				2779320627E30FC30010E277 /* UIView+ValueAdd.m in Sources */,
@@ -8969,6 +9022,7 @@
 				BCFA12772CF44C84005229AC /* GroupCourseStudentModel.m in Sources */,
 				275B172927EB26920081FDEF /* ChatAddressHeaderView.m in Sources */,
 				BC7CFFA22817D72200CAEB21 /* IncomeListModel.m in Sources */,
+				BCB6F45E2CF57F13000D8805 /* TeacherStyleFlowLayout.m in Sources */,
 				2755C06C27EC7F0E007D9070 /* KSChatComplainController.m in Sources */,
 				BC12638528FEB5B900509E90 /* UserDetailBodyView.m in Sources */,
 				BC14A61728A0B0440086395C /* MineBottomView.m in Sources */,

+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/my_stylePlay.imageset/Contents.json

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

二進制
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/my_stylePlay.imageset/my_stylePlay@2x.png


二進制
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/my_stylePlay.imageset/my_stylePlay@3x.png


+ 33 - 2
KulexiuForTeacher/KulexiuForTeacher/Common/Base/AlertView/KSPublicAlertView.m

@@ -7,9 +7,12 @@
 
 #import "KSPublicAlertView.h"
 #import <UIView+Animation.h>
+#import "UIView+KSLayer.h"
 
 @interface KSPublicAlertView ()
 
+@property (weak, nonatomic) IBOutlet UIView *leftView;
+
 @property (weak, nonatomic) IBOutlet UILabel *topTitle;
 
 @property (weak, nonatomic) IBOutlet UILabel *descLabel;
@@ -18,7 +21,6 @@
 
 @property (weak, nonatomic) IBOutlet UIButton *sureButton;
 
-
 @property (nonatomic, copy) AlertCallback cancelCallback;
 
 @property (nonatomic, copy) AlertCallback sureCallback;
@@ -27,11 +29,16 @@
 
 
 @implementation KSPublicAlertView
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    CAGradientLayer *colorLayer = [UIView createGradientLayerFromColor:HexRGB(0x59E5D4) startPoint:CGPointMake(0.5, 0) endColor:HexRGB(0x2DC7AA) endPoint:CGPointMake(0.5, 1) bounds:CGRectMake(0, 0, 4, 15)];
+    [self.leftView.layer addSublayer:colorLayer];
+}
 
 + (instancetype)shareInstanceWithTitle:(NSString *)title descMessage:(NSString *)descMsg leftTitle:(NSString *)leftTitle rightTitle:(NSString *)rightTitle cancelAction:(AlertCallback)cancelCallback sureAction:(AlertCallback)sureCallback {
     KSPublicAlertView *alertView = [[[NSBundle mainBundle] loadNibNamed:@"KSPublicAlertView" owner:nil options:nil] firstObject];
     alertView.topTitle.text = title;
-    alertView.descLabel.text = descMsg;
+    alertView.descLabel.attributedText = [self getAttrString:descMsg];
     [alertView.cancleButton setTitle:leftTitle forState:UIControlStateNormal];
     [alertView.sureButton setTitle:rightTitle forState:UIControlStateNormal];
     if (cancelCallback) {
@@ -44,6 +51,30 @@
     return alertView;
 }
 
+
+
++ (NSMutableAttributedString *)getAttrString:(NSString *)desc {
+    if ([NSString isEmptyString:desc]) {
+        desc = @"";
+    }
+    NSMutableParagraphStyle *paragraphStyle = [self getParagraphStyleWithFont:[UIFont systemFontOfSize:16.0f] lineHeight:24.0f];
+    CGFloat baselineOffset = [self getBaseOffline:[UIFont systemFontOfSize:16.0f] lineHeight:24.0f];
+    NSMutableAttributedString *attrs = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSParagraphStyleAttributeName:paragraphStyle, NSBaselineOffsetAttributeName:@(baselineOffset),NSFontAttributeName:[UIFont systemFontOfSize:16.0f], NSForegroundColorAttributeName:HexRGB(0x666666)}];
+    return attrs;
+}
+
++ (CGFloat)getBaseOffline:(UIFont *)font lineHeight:(CGFloat)lineHeight {
+    CGFloat baselineOffset = (lineHeight - font.lineHeight) / 4;
+    return baselineOffset;
+}
+
++ (NSMutableParagraphStyle *)getParagraphStyleWithFont:(UIFont *)font lineHeight:(CGFloat)lineHeigh {
+    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
+    paragraphStyle.maximumLineHeight = lineHeigh;
+    paragraphStyle.minimumLineHeight = lineHeigh;
+    return paragraphStyle;
+}
+
 - (void)showAlert {
     [[NSObject getKeyWindow] addSubview:self];
     [self mas_makeConstraints:^(MASConstraintMaker *make) {

+ 24 - 37
KulexiuForTeacher/KulexiuForTeacher/Common/Base/AlertView/KSPublicAlertView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -14,19 +14,19 @@
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3b9-KX-1f0">
-                    <rect key="frame" x="47" y="322.5" width="320" height="186.5"/>
+                    <rect key="frame" x="58.5" y="331.5" width="297" height="168.5"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="提示" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dY9-ag-CwK">
-                            <rect key="frame" x="27" y="18" width="273" height="30"/>
+                            <rect key="frame" x="27" y="18" width="250" height="22"/>
                             <constraints>
-                                <constraint firstAttribute="height" constant="30" id="TAa-cN-fF8"/>
+                                <constraint firstAttribute="height" constant="22" id="ZU7-aH-WT3"/>
                             </constraints>
-                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
+                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
                             <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="L4C-eG-exs">
-                            <rect key="frame" x="162.5" y="125.5" width="144.5" height="44"/>
+                            <rect key="frame" x="151" y="112.5" width="133" height="36"/>
                             <color key="backgroundColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <fontDescription key="fontDescription" type="system" pointSize="16"/>
                             <state key="normal" title="确定">
@@ -34,7 +34,7 @@
                             </state>
                             <userDefinedRuntimeAttributes>
                                 <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                    <real key="value" value="22"/>
+                                    <real key="value" value="18"/>
                                 </userDefinedRuntimeAttribute>
                             </userDefinedRuntimeAttributes>
                             <connections>
@@ -42,9 +42,9 @@
                             </connections>
                         </button>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yAc-6f-XSy">
-                            <rect key="frame" x="13" y="125.5" width="144.5" height="44"/>
+                            <rect key="frame" x="13" y="112.5" width="133" height="36"/>
                             <constraints>
-                                <constraint firstAttribute="height" constant="44" id="5K1-u8-Aw6"/>
+                                <constraint firstAttribute="height" constant="36" id="5K1-u8-Aw6"/>
                             </constraints>
                             <fontDescription key="fontDescription" type="system" pointSize="16"/>
                             <state key="normal" title="取消">
@@ -52,13 +52,13 @@
                             </state>
                             <userDefinedRuntimeAttributes>
                                 <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                    <real key="value" value="22"/>
+                                    <real key="value" value="18"/>
                                 </userDefinedRuntimeAttribute>
                                 <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
                                     <real key="value" value="1"/>
                                 </userDefinedRuntimeAttribute>
                                 <userDefinedRuntimeAttribute type="color" keyPath="borderColor">
-                                    <color key="value" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
+                                    <color key="value" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 </userDefinedRuntimeAttribute>
                             </userDefinedRuntimeAttributes>
                             <connections>
@@ -66,18 +66,18 @@
                             </connections>
                         </button>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="75G-K8-Mgg">
-                            <rect key="frame" x="19" y="68" width="287" height="33.5"/>
+                            <rect key="frame" x="18" y="54" width="265" height="38.5"/>
                             <string key="text">聊天功能已断开,是否重新连接?
 </string>
-                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
-                            <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hVM-RC-bSr">
-                            <rect key="frame" x="18" y="24" width="4" height="18"/>
+                            <rect key="frame" x="18" y="21.5" width="4" height="15"/>
                             <color key="backgroundColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <constraints>
-                                <constraint firstAttribute="height" constant="18" id="xpH-rm-A2j"/>
+                                <constraint firstAttribute="height" constant="15" id="xpH-rm-A2j"/>
                                 <constraint firstAttribute="width" constant="4" id="z6W-x6-koW"/>
                             </constraints>
                             <userDefinedRuntimeAttributes>
@@ -94,37 +94,23 @@
                         <constraint firstItem="L4C-eG-exs" firstAttribute="height" secondItem="yAc-6f-XSy" secondAttribute="height" id="BnZ-2L-eok"/>
                         <constraint firstAttribute="trailing" secondItem="dY9-ag-CwK" secondAttribute="trailing" constant="20" id="Ip9-L6-2Nn"/>
                         <constraint firstAttribute="trailing" secondItem="75G-K8-Mgg" secondAttribute="trailing" constant="14" id="Ipw-PS-rsG"/>
-                        <constraint firstAttribute="bottom" secondItem="yAc-6f-XSy" secondAttribute="bottom" constant="17" id="UiJ-kA-PXC"/>
+                        <constraint firstAttribute="bottom" secondItem="yAc-6f-XSy" secondAttribute="bottom" constant="20" id="UiJ-kA-PXC"/>
+                        <constraint firstItem="75G-K8-Mgg" firstAttribute="top" secondItem="3b9-KX-1f0" secondAttribute="top" constant="54" id="VIB-Mh-VBg"/>
                         <constraint firstItem="dY9-ag-CwK" firstAttribute="top" secondItem="3b9-KX-1f0" secondAttribute="top" constant="18" id="YCe-mx-ufc"/>
-                        <constraint firstItem="75G-K8-Mgg" firstAttribute="leading" secondItem="3b9-KX-1f0" secondAttribute="leading" constant="19" id="Zgf-bs-adf"/>
-                        <constraint firstItem="75G-K8-Mgg" firstAttribute="top" secondItem="dY9-ag-CwK" secondAttribute="bottom" constant="20" id="aTo-Dm-iuu"/>
+                        <constraint firstItem="75G-K8-Mgg" firstAttribute="leading" secondItem="3b9-KX-1f0" secondAttribute="leading" constant="18" id="Zgf-bs-adf"/>
                         <constraint firstItem="dY9-ag-CwK" firstAttribute="leading" secondItem="hVM-RC-bSr" secondAttribute="trailing" constant="5" id="d4n-7h-4Cm"/>
                         <constraint firstItem="hVM-RC-bSr" firstAttribute="leading" secondItem="3b9-KX-1f0" secondAttribute="leading" constant="18" id="fUG-ke-LAn"/>
                         <constraint firstItem="dY9-ag-CwK" firstAttribute="centerY" secondItem="hVM-RC-bSr" secondAttribute="centerY" id="iW4-rB-oPc"/>
                         <constraint firstAttribute="trailing" secondItem="L4C-eG-exs" secondAttribute="trailing" constant="13" id="phn-RV-9gH"/>
-                        <constraint firstAttribute="width" constant="320" id="q4k-AQ-LaT"/>
+                        <constraint firstAttribute="width" constant="297" id="q4k-AQ-LaT"/>
                         <constraint firstItem="L4C-eG-exs" firstAttribute="bottom" secondItem="yAc-6f-XSy" secondAttribute="bottom" id="vyg-TN-SBp"/>
                         <constraint firstItem="L4C-eG-exs" firstAttribute="width" secondItem="yAc-6f-XSy" secondAttribute="width" id="y46-NI-6sF"/>
-                        <constraint firstItem="L4C-eG-exs" firstAttribute="top" secondItem="75G-K8-Mgg" secondAttribute="bottom" constant="24" id="zGT-pp-1AG"/>
-                        <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="140" id="zrQ-iS-sC6"/>
+                        <constraint firstItem="L4C-eG-exs" firstAttribute="top" secondItem="75G-K8-Mgg" secondAttribute="bottom" constant="20" id="zGT-pp-1AG"/>
                     </constraints>
                     <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
-                            <size key="value" width="0.0" height="24"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
-                            <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.22" colorSpace="calibratedRGB"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
-                            <real key="value" value="1"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
-                            <real key="value" value="24"/>
-                        </userDefinedRuntimeAttribute>
                         <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="6"/>
+                            <real key="value" value="10"/>
                         </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
                     </userDefinedRuntimeAttributes>
                 </view>
             </subviews>
@@ -139,6 +125,7 @@
             <connections>
                 <outlet property="cancleButton" destination="yAc-6f-XSy" id="gft-OU-gCQ"/>
                 <outlet property="descLabel" destination="75G-K8-Mgg" id="KFH-sk-nhd"/>
+                <outlet property="leftView" destination="hVM-RC-bSr" id="Flc-Za-aYW"/>
                 <outlet property="sureButton" destination="L4C-eG-exs" id="tY3-Sd-5cK"/>
                 <outlet property="topTitle" destination="dY9-ag-CwK" id="XN4-1j-Rmz"/>
             </connections>

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m

@@ -2968,7 +2968,7 @@
     [parm setValue:subjectId forKey:@"subjectId"];
     [parm setValue:subjectPrice forKey:@"subjectPrice"];
     [parm setValue:courseMinutes forKey:@"courseMinutes"];
-    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
+    [self request:post andWithUrl:url and:@[parm] success:success faliure:faliure];
 }
 
 // /teacher-server/sysConfig/queryByParamNameList

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.m

@@ -359,6 +359,7 @@
     playModel.videoURL = [NSURL URLWithString:fileUrl];
     _wmPlayer.playerModel = playModel;
     _wmPlayer.delegate = self;
+    _wmPlayer.tintColor = THEMECOLOR;
     _bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
     _bgView.backgroundColor = [UIColor blackColor];
     [[UIApplication sharedApplication].keyWindow addSubview:_bgView];

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/VIPCourse/Controller/VipCouseDetailViewController.m

@@ -360,6 +360,7 @@
     playModel.videoURL = [NSURL URLWithString:fileUrl];
     _wmPlayer.playerModel = playModel;
     _wmPlayer.delegate = self;
+    _wmPlayer.tintColor = THEMECOLOR;
     _bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
     _bgView.backgroundColor = [UIColor blackColor];
     [[UIApplication sharedApplication].keyWindow addSubview:_bgView];

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Homework/Controller/HomeworkDetailViewController.m

@@ -234,6 +234,7 @@
     playModel.videoURL = [NSURL URLWithString:fileUrl];
     _wmPlayer.playerModel = playModel;
     _wmPlayer.delegate = self;
+    _wmPlayer.tintColor = THEMECOLOR;
     _bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
     _bgView.backgroundColor = [UIColor blackColor];
     [[UIApplication sharedApplication].keyWindow addSubview:_bgView];

+ 13 - 8
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Controller/MyStyleViewController.m

@@ -24,7 +24,8 @@
 #import "ModifyPhoneCheckController.h"
 #import "UserAuthViewController.h"
 #import "ModifyNameViewController.h"
-#import "LiveRoomAlertView.h"
+
+#import "KSPublicAlertView.h"
 #import "MyStyleTimeSettingCell.h"
 #import "KSBaseWKWebViewController.h"
 
@@ -65,11 +66,11 @@
 @property (nonatomic, assign) BOOL hasModify;
 
 /// 提示窗
-@property (nonatomic, strong) LiveRoomAlertView *alertView;
+@property (nonatomic, strong) KSPublicAlertView *alertView;
 
 @property (nonatomic, assign) BOOL isModifyAvatal;
 
-@property (nonatomic, assign) BOOL hasSetting;
+@property (nonatomic, assign) BOOL courseTimeFlag;
 
 @end
 
@@ -131,6 +132,7 @@
             NSString *subjectIds = [result ks_stringValueForKey:@"subjectId"];
             NSString *subjectNames = [result ks_stringValueForKey:@"subjectName"];
             [self configWithSubjectMessage:subjectIds subjectName:subjectNames];
+            self.courseTimeFlag = [result ks_boolValueForKey:@"courseTimeFlag"];
             // introduction
             self.content = [result ks_stringValueForKey:@"introduction"];
             NSArray *videoList = [result ks_arrayValueForKey:@"styleVideo"];
@@ -276,7 +278,7 @@
     else if (indexPath.row == 1) {
         MyStyleTimeSettingCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyStyleTimeSettingCell"];
         MJWeakSelf;
-        [cell configWithSettingType:self.hasSetting callback:^{
+        [cell configWithSettingType:self.courseTimeFlag callback:^{
             [weakSelf showSettingWeb];
         }];
         return cell;
@@ -302,8 +304,9 @@
 }
 
 - (void)showSettingWeb {
-//    KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
-//    [self.navigationController pushViewController:webCtrl animated:YES];
+    KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
+    webCtrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/practiceSettingTimer"];
+    [self.navigationController pushViewController:webCtrl animated:YES];
 }
 
 - (void)opreationVideoCell:(STYLEVIDEO)type container:(UIView *)container {
@@ -524,6 +527,7 @@
     playModel.videoURL = [NSURL URLWithString:fileUrl];
     _wmPlayer.playerModel = playModel;
     _wmPlayer.delegate = self;
+    _wmPlayer.tintColor = THEMECOLOR;
     _bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
     _bgView.backgroundColor = [UIColor blackColor];
     [[UIApplication sharedApplication].keyWindow addSubview:_bgView];
@@ -590,11 +594,12 @@
     [self.view endEditing:YES];
     // 根据需要返回到不同页面
     if (self.hasModify) {
-        self.alertView = [LiveRoomAlertView liveroomAlertWithTitle:@"您尚未保存修改信息,返回后将取消修改" leftButtonTitle:@"取消" rightTitle:@"确认" inView:self.view cancel:^{
+        self.alertView = [KSPublicAlertView shareInstanceWithTitle:@"提示" descMessage:@"您尚未保存修改信息,返回后将取消修改" leftTitle:@"取消" rightTitle:@"确认" cancelAction:^{
             
-        } confirm:^{
+        } sureAction:^{
             [self.navigationController popViewControllerAnimated:YES];
         }];
+        
     }
     else {
         [self.navigationController popViewControllerAnimated:YES];

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Model/StyleVideoModel.h

@@ -12,7 +12,7 @@
 @interface StyleVideoModel : NSObject <NSCoding, NSCopying>
 
 @property (nonatomic, strong) NSString *userId;
-@property (nonatomic, assign) double browse;
+@property (nonatomic, assign) NSInteger browse;
 @property (nonatomic, strong) NSString *internalBaseClassIdentifier;
 @property (nonatomic, strong) NSString *updateTime;
 @property (nonatomic, strong) NSString *describe;

+ 4 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Model/StyleVideoModel.m

@@ -49,7 +49,7 @@ NSString *const kStyleVideoModelCover = @"cover";
     // passed into the model class doesn't break the parsing.
     if(self && [dict isKindOfClass:[NSDictionary class]]) {
             self.userId = [self objectOrNilForKey:kStyleVideoModelUserId fromDictionary:dict];
-            self.browse = [[self objectOrNilForKey:kStyleVideoModelBrowse fromDictionary:dict] doubleValue];
+        self.browse = [[self objectOrNilForKey:kStyleVideoModelBrowse fromDictionary:dict] integerValue];
             self.internalBaseClassIdentifier = [self objectOrNilForKey:kStyleVideoModelId fromDictionary:dict];
             self.updateTime = [self objectOrNilForKey:kStyleVideoModelUpdateTime fromDictionary:dict];
             self.describe = [self objectOrNilForKey:kStyleVideoModelDescribe fromDictionary:dict];
@@ -67,7 +67,7 @@ NSString *const kStyleVideoModelCover = @"cover";
 {
     NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
     [mutableDict setValue:self.userId forKey:kStyleVideoModelUserId];
-    [mutableDict setValue:[NSNumber numberWithDouble:self.browse] forKey:kStyleVideoModelBrowse];
+    [mutableDict setValue:[NSNumber numberWithInteger:self.browse] forKey:kStyleVideoModelBrowse];
     [mutableDict setValue:self.internalBaseClassIdentifier forKey:kStyleVideoModelId];
     [mutableDict setValue:self.updateTime forKey:kStyleVideoModelUpdateTime];
     [mutableDict setValue:self.describe forKey:kStyleVideoModelDescribe];
@@ -103,7 +103,7 @@ NSString *const kStyleVideoModelCover = @"cover";
     self = [super init];
 
     self.userId = [aDecoder decodeObjectForKey:kStyleVideoModelUserId];
-    self.browse = [aDecoder decodeDoubleForKey:kStyleVideoModelBrowse];
+    self.browse = [aDecoder decodeIntegerForKey:kStyleVideoModelBrowse];
     self.internalBaseClassIdentifier = [aDecoder decodeObjectForKey:kStyleVideoModelId];
     self.updateTime = [aDecoder decodeObjectForKey:kStyleVideoModelUpdateTime];
     self.describe = [aDecoder decodeObjectForKey:kStyleVideoModelDescribe];
@@ -118,7 +118,7 @@ NSString *const kStyleVideoModelCover = @"cover";
 {
 
     [aCoder encodeObject:_userId forKey:kStyleVideoModelUserId];
-    [aCoder encodeDouble:_browse forKey:kStyleVideoModelBrowse];
+    [aCoder encodeInteger:_browse forKey:kStyleVideoModelBrowse];
     [aCoder encodeObject:_internalBaseClassIdentifier forKey:kStyleVideoModelId];
     [aCoder encodeObject:_updateTime forKey:kStyleVideoModelUpdateTime];
     [aCoder encodeObject:_describe forKey:kStyleVideoModelDescribe];

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/LiveList/View/LiveListBodyView.m

@@ -314,6 +314,7 @@
     playModel.videoURL = [NSURL URLWithString:fileUrl];
     _wmPlayer.playerModel = playModel;
     _wmPlayer.delegate = self;
+    _wmPlayer.tintColor = THEMECOLOR;
     _bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
     _bgView.backgroundColor = [UIColor blackColor];
     [[UIApplication sharedApplication].keyWindow addSubview:_bgView];

+ 3 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/Controller/MinePageViewController.m

@@ -24,6 +24,7 @@
 #import "FansGroupAlertView.h"
 #import "KSGroupConversationController.h"
 #import "CreateFansGroupViewController.h"
+#import "MyStyleVideoListController.h"
 
 #define HEADER_HEIGHT (50)
 
@@ -420,7 +421,8 @@
 }
 
 - (void)showStyleVideo {
-    
+    MyStyleVideoListController *ctrl = [[MyStyleVideoListController alloc] init];
+    [self.navigationController pushViewController:ctrl animated:YES];
 }
 
 - (void)showFansGroup {

+ 16 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/Controller/MyStyleVideoListController.h

@@ -0,0 +1,16 @@
+//
+//  MyStyleVideoListController.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/11/26.
+//
+
+#import "KSBaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MyStyleVideoListController : KSBaseViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 216 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/Controller/MyStyleVideoListController.m

@@ -0,0 +1,216 @@
+//
+//  MyStyleVideoListController.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/11/26.
+//
+
+#import "MyStyleVideoListController.h"
+#import "TeacherStyleFlowLayout.h"
+#import "MyStyleVideoCollectionViewCell.h"
+#import <WMPlayer.h>
+
+@interface MyStyleVideoListController ()<UICollectionViewDelegate,UICollectionViewDataSource,WaterFlowLayoutDelegate,WMPlayerDelegate>
+{
+    WMPlayer *_wmPlayer;
+    CGRect _playerFrame;
+}
+@property (nonatomic, strong) UIView *bgView;
+
+@property (nonatomic, assign) BOOL isRatation;
+
+@property (nonatomic, strong) UICollectionView *collectionView;
+
+@property (nonatomic, strong) NSMutableArray *videoArray;
+
+@property (nonatomic, strong) NSString *avatar;
+
+@property (nonatomic, strong) NSString *userName;
+
+@end
+
+@implementation MyStyleVideoListController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    [self allocTitle:@"个人风采"];
+    [self configUI];
+    [self requestMyStyle];
+}
+
+- (void)configUI {
+    [self.scrollView removeFromSuperview];
+    [self.view addSubview:self.collectionView];
+    [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.top.bottom.mas_equalTo(self.view);
+    }];
+}
+
+
+- (void)requestMyStyle {
+    [LOADING_MANAGER showHUD];
+    [KSNetworkingManager queryTeacherStyleRequest:KS_GET success:^(NSDictionary * _Nonnull dic) {
+        [LOADING_MANAGER removeHUD];
+        if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
+            NSDictionary *result = [dic ks_dictionaryValueForKey:@"data"];
+            self.userName = [result ks_stringValueForKey:@"username"];
+            self.avatar = [result ks_stringValueForKey:@"avatar"];
+            self.videoArray = [NSMutableArray array];
+            NSArray *videoList = [result ks_arrayValueForKey:@"styleVideo"];
+            for (NSDictionary *parm in videoList) {
+                StyleVideoModel *model = [[StyleVideoModel alloc] initWithDictionary:parm];
+                [self.videoArray addObject:model];
+            }
+        }
+        else {
+            [LOADING_MANAGER MBShowAUTOHidingInWindow:MESSAGEKEY];
+        }
+        [self.collectionView reloadData];
+    } faliure:^(NSError * _Nonnull error) {
+        [LOADING_MANAGER removeHUD];
+    }];
+}
+
+#pragma mark ----- collection view
+- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
+    return 1;
+}
+- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
+    return self.videoArray.count;
+}
+
+- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
+    StyleVideoModel * source = self.videoArray[indexPath.item];
+    MyStyleVideoCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyStyleVideoCollectionViewCell" forIndexPath:indexPath];
+    [cell configWithSource:source name:self.userName avatar:self.avatar];
+    return cell;
+}
+
+- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
+    
+    StyleVideoModel * source = self.videoArray[indexPath.item];
+    [self displayVideo:source.videoUrl];
+}
+
+- (CGFloat)waterFlowLayout:(TeacherStyleFlowLayout *)waterFlowLayout heightForWidth:(CGFloat)width andIndexPath:(NSIndexPath *)indexPath {
+    if (IS_IPAD) {
+        if (indexPath.row == 0) { // 第一排
+            
+            if (indexPath.item % 3 == 1) {
+                return 211.0f;
+            }
+            return 265.0f;
+        }
+        else {
+            
+            if (indexPath.item % 3 == 1) {
+                return 211.0f;
+            }
+            return 248.0f;
+        }
+    }
+    else {
+        if (indexPath.row == 0) { // 第一排
+            return 182.0f;
+        }
+        else {
+            return 209.0f;
+        }
+    }
+    
+}
+
+
+- (void)displayVideo:(NSString *)videoUrl {
+    if ([NSString isEmptyString:videoUrl]) {
+        return;
+    }
+    [self playVideoWithUrl:videoUrl];
+}
+
+#pragma mark ----- lazying
+- (UICollectionView *)collectionView {
+    if (!_collectionView) {
+        TeacherStyleFlowLayout *layout = [[TeacherStyleFlowLayout alloc] init];
+        layout.sectionInset = UIEdgeInsetsMake(0, 14, 12, 14);
+        layout.scrollDirection = UICollectionViewScrollDirectionVertical;
+        layout.delegate = self;
+        _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
+        _collectionView.backgroundColor = [UIColor clearColor];
+        _collectionView.delegate = self;
+        _collectionView.dataSource = self;
+        _collectionView.showsVerticalScrollIndicator = NO;
+        _collectionView.showsHorizontalScrollIndicator = NO;
+        [_collectionView registerNib:[UINib nibWithNibName:@"MyStyleVideoCollectionViewCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"MyStyleVideoCollectionViewCell"];
+    }
+    return _collectionView;
+}
+
+#pragma mark ------ WMPlayer
+- (void)playVideoWithUrl:(NSString *)fileUrl {
+    fileUrl = [fileUrl getUrlEndcodeString];
+    _playerFrame = CGRectMake(0, iPhoneXSafeTopMargin, KPortraitWidth, KPortraitHeight - iPhoneXSafeTopMargin - iPhoneXSafeBottomMargin);
+    _wmPlayer = [[WMPlayer alloc] initWithFrame:_playerFrame];
+    WMPlayerModel *playModel = [[WMPlayerModel alloc] init];
+    playModel.videoURL = [NSURL URLWithString:fileUrl];
+    _wmPlayer.playerModel = playModel;
+    _wmPlayer.delegate = self;
+    _wmPlayer.tintColor = THEMECOLOR;
+    _bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KPortraitWidth, KPortraitHeight)];
+    _bgView.backgroundColor = [UIColor blackColor];
+    [[UIApplication sharedApplication].keyWindow addSubview:_bgView];
+    [[UIApplication sharedApplication].keyWindow addSubview:_wmPlayer];
+    [[UIApplication sharedApplication].keyWindow bringSubviewToFront:_wmPlayer];
+    
+    [_wmPlayer play];
+}
+
+- (void)wmplayer:(WMPlayer *)wmplayer clickedCloseButton:(UIButton *)backBtn {
+    [wmplayer removePlayer];
+    [_bgView removeFromSuperview];
+    [self setNeedsStatusBarAppearanceUpdate];
+}
+
+- (void)wmplayer:(WMPlayer *)wmplayer clickedFullScreenButton:(UIButton *)fullScreenBtn {
+    self.isRatation = !self.isRatation;
+    
+    if (self.isRatation) {
+        [wmplayer removeFromSuperview];
+        [UIView animateWithDuration:1.0f animations:^{
+            wmplayer.transform = CGAffineTransformMakeRotation(M_PI_2);
+            
+        } completion:^(BOOL finished) {
+            wmplayer.frame = CGRectMake(0, iPhoneXSafeTopMargin, KPortraitWidth, KPortraitHeight - iPhoneXSafeTopMargin - iPhoneXSafeBottomMargin);
+            [[UIApplication sharedApplication].keyWindow addSubview:wmplayer];
+            [[UIApplication sharedApplication].keyWindow bringSubviewToFront:wmplayer];
+        }];
+    }
+    else {
+        [wmplayer removeFromSuperview];
+        
+        [UIView animateWithDuration:1.0f animations:^{
+            //        复原
+            wmplayer.transform = CGAffineTransformIdentity;
+            
+        } completion:^(BOOL finished) {
+            wmplayer.frame = CGRectMake(0, iPhoneXSafeTopMargin, KPortraitWidth, KPortraitHeight - iPhoneXSafeTopMargin - iPhoneXSafeBottomMargin);
+            [[UIApplication sharedApplication].keyWindow addSubview:wmplayer];
+            [[UIApplication sharedApplication].keyWindow bringSubviewToFront:wmplayer];
+        }];
+    }
+}
+
+
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 31 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/Model/TeacherStyleFlowLayout.h

@@ -0,0 +1,31 @@
+//
+//  TeacherStyleFlowLayout.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/8/30.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class TeacherStyleFlowLayout;
+
+@protocol WaterFlowLayoutDelegate <NSObject> //设置代理传递数据,降低了与其他类的耦合性,通用性更强
+
+- (CGFloat)waterFlowLayout:(TeacherStyleFlowLayout *)waterFlowLayout heightForWidth:(CGFloat)width andIndexPath:(NSIndexPath *)indexPath;
+
+@end
+
+
+@interface TeacherStyleFlowLayout : UICollectionViewFlowLayout
+
+@property (assign,nonatomic) CGFloat columnMargin;//每一列item之间的间距
+@property (assign,nonatomic) CGFloat rowMargin;   //每一行item之间的间距
+@property (assign,nonatomic) NSInteger columnCount;//设置每一行排列的个数
+
+@property (weak,nonatomic) id<WaterFlowLayoutDelegate> delegate; //设置代理
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 140 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/Model/TeacherStyleFlowLayout.m

@@ -0,0 +1,140 @@
+//
+//  TeacherStyleFlowLayout.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/8/30.
+//
+
+#import "TeacherStyleFlowLayout.h"
+
+@interface TeacherStyleFlowLayout ()
+
+/** 这个字典用来存储每一列item的高度 */
+@property (strong,nonatomic)NSMutableDictionary *maxYDic;
+/** 存放每一个item的布局属性 */
+@property (strong,nonatomic)NSMutableArray *attrsArray;
+
+@end
+
+@implementation TeacherStyleFlowLayout
+
+- (instancetype)init {
+    if (self = [super init]){
+        self.columnMargin = 12;
+        self.rowMargin = 11;
+        if (IS_IPAD) {
+            self.columnCount = 3;
+        }
+        else {
+            self.columnCount = 2;
+        }
+    }
+    return self;
+}
+
+//每一次布局前的准备工作
+-(void)prepareLayout
+{
+    [super prepareLayout];
+    
+    //清空最大的y值
+    for (int i =0; i < self.columnCount; i++)
+    {
+        NSString *column = [NSString stringWithFormat:@"%d",i];
+        self.maxYDic[column] = @(self.sectionInset.top);
+    }
+
+    //计算所有item的属性
+    [self.attrsArray removeAllObjects];
+    NSInteger count = [self.collectionView numberOfItemsInSection:0];
+    for (int i=0; i<count; i++)
+    {
+        UICollectionViewLayoutAttributes *attrs = [self layoutAttributesForItemAtIndexPath:[NSIndexPath indexPathForItem:i inSection:0]];
+        [self.attrsArray addObject:attrs];
+    }
+}
+
+//设置collectionView滚动区域
+- (CGSize)collectionViewContentSize
+{
+    //假设最长的那一列为第0列
+    __block NSString *maxColumn = @"0";
+    
+    //遍历字典,找出最长的那一列
+    [self.maxYDic enumerateKeysAndObjectsUsingBlock:^(NSString *column, NSNumber *maxY, BOOL *stop) {
+        
+        if ([maxY floatValue] > [self.maxYDic[maxColumn] floatValue])
+        {
+            maxColumn = column;
+        }
+    }];
+    return CGSizeMake(0, [self.maxYDic[maxColumn]floatValue]+self.sectionInset.bottom);
+}
+
+//允许每一次重新布局
+-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
+{
+    return YES;
+}
+
+//布局每一个属性
+-(UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
+{
+    //假设最短的那一列为第0列
+    __block NSString *minColumn = @"0";
+    
+    //遍历字典,找出最短的那一列
+    [self.maxYDic enumerateKeysAndObjectsUsingBlock:^(NSString *column, NSNumber *maxY, BOOL *stop) {
+        
+        if ([maxY floatValue] < [self.maxYDic[minColumn] floatValue])
+        {
+            minColumn = column;
+        }
+    }];
+    
+    //计算每一个item的宽度和高度
+    CGFloat width = (self.collectionView.frame.size.width - self.columnMargin*(self.columnCount - 1) - self.sectionInset.left - self.sectionInset.right) / self.columnCount;
+    
+    CGFloat height = [self.delegate waterFlowLayout:self heightForWidth:width andIndexPath:indexPath] ;
+    
+    
+    //计算每一个item的位置
+    CGFloat x = self.sectionInset.left + (width + self.columnMargin) * [minColumn floatValue];
+    CGFloat y = [self.maxYDic[minColumn] floatValue] + self.rowMargin;
+    
+    
+    //更新这一列的y值
+    self.maxYDic[minColumn] = @(y + height);
+    
+    
+    //创建布局属性
+    UICollectionViewLayoutAttributes *attrs = [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath];
+    
+    //设置item的frame
+    attrs.frame = CGRectMake(x, y, width, height);
+    
+    return attrs;
+}
+
+//布局所有item的属性,包括header、footer
+-(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
+{
+    return self.attrsArray;
+}
+
+#pragma mark ---- lazying
+- (NSMutableDictionary *)maxYDic {
+    if (!_maxYDic) {
+        _maxYDic = [NSMutableDictionary dictionary];
+    }
+    return _maxYDic;
+}
+
+- (NSMutableArray *)attrsArray {
+    if (!_attrsArray) {
+        _attrsArray = [NSMutableArray array];
+    }
+    return _attrsArray;
+}
+
+@end

+ 19 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/View/MyStyleVideoCollectionViewCell.h

@@ -0,0 +1,19 @@
+//
+//  MyStyleVideoCollectionViewCell.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/11/26.
+//
+
+#import <UIKit/UIKit.h>
+#import "StyleVideoModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MyStyleVideoCollectionViewCell : UICollectionViewCell
+
+- (void)configWithSource:(StyleVideoModel *)model name:(NSString *)name avatar:(NSString *)avatar;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 37 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/View/MyStyleVideoCollectionViewCell.m

@@ -0,0 +1,37 @@
+//
+//  MyStyleVideoCollectionViewCell.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/11/26.
+//
+
+#import "MyStyleVideoCollectionViewCell.h"
+
+@interface MyStyleVideoCollectionViewCell ()
+
+@property (weak, nonatomic) IBOutlet UIImageView *coverImage;
+
+@property (weak, nonatomic) IBOutlet UIImageView *teacherAvatar;
+
+@property (weak, nonatomic) IBOutlet UILabel *teacherName;
+
+@property (weak, nonatomic) IBOutlet UILabel *countLabel;
+
+@end
+
+@implementation MyStyleVideoCollectionViewCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (void)configWithSource:(StyleVideoModel *)model name:(NSString *)name avatar:(NSString *)avatar; {
+    
+    [self.coverImage sd_setImageWithURL:[NSURL URLWithString:[model.cover getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:@"video_placeholder"]];
+    [self.teacherAvatar sd_setImageWithURL:[NSURL URLWithString:[avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:TEACHER_AVATAR]];
+    
+    self.teacherName.text = [NSString returnNoNullStringWithString:name];
+    self.countLabel.text = [NSString stringWithFormat:@"%zd人观看",model.browse];
+}
+@end

+ 125 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/StyleVideo/View/MyStyleVideoCollectionViewCell.xib

@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="MyStyleVideoCollectionViewCell">
+            <rect key="frame" x="0.0" y="0.0" width="202" height="177"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                <rect key="frame" x="0.0" y="0.0" width="202" height="177"/>
+                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                <subviews>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IMl-93-OW1">
+                        <rect key="frame" x="0.0" y="0.0" width="202" height="177"/>
+                        <subviews>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="f8A-sE-FUd">
+                                <rect key="frame" x="0.0" y="0.0" width="202" height="134"/>
+                            </imageView>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XYP-cg-iwK">
+                                <rect key="frame" x="0.0" y="134" width="202" height="43"/>
+                                <subviews>
+                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="teacher_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="pmW-kc-zhk">
+                                        <rect key="frame" x="10" y="13.666666666666657" width="16" height="16"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="16" id="uCI-1n-Lmw"/>
+                                            <constraint firstAttribute="width" constant="16" id="wW2-Kp-WJ3"/>
+                                        </constraints>
+                                        <userDefinedRuntimeAttributes>
+                                            <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                                <real key="value" value="8"/>
+                                            </userDefinedRuntimeAttribute>
+                                        </userDefinedRuntimeAttributes>
+                                    </imageView>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="749" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rKT-NP-UhN">
+                                        <rect key="frame" x="31" y="13" width="0.0" height="17"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="17" id="yCI-0Y-4Xo"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                        <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="人观看" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yts-oN-gR2">
+                                        <rect key="frame" x="156" y="13" width="36" height="17"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="17" id="APJ-T1-v1Y"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                        <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                <constraints>
+                                    <constraint firstItem="pmW-kc-zhk" firstAttribute="centerY" secondItem="XYP-cg-iwK" secondAttribute="centerY" id="0xn-f2-Q7b"/>
+                                    <constraint firstAttribute="trailing" secondItem="yts-oN-gR2" secondAttribute="trailing" constant="10" id="1wO-rg-90K"/>
+                                    <constraint firstItem="rKT-NP-UhN" firstAttribute="centerY" secondItem="pmW-kc-zhk" secondAttribute="centerY" id="RZp-N5-8dt"/>
+                                    <constraint firstItem="yts-oN-gR2" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="rKT-NP-UhN" secondAttribute="trailing" constant="10" id="bm9-tB-vQ3"/>
+                                    <constraint firstItem="pmW-kc-zhk" firstAttribute="leading" secondItem="XYP-cg-iwK" secondAttribute="leading" constant="10" id="ele-9D-QEG"/>
+                                    <constraint firstItem="rKT-NP-UhN" firstAttribute="leading" secondItem="pmW-kc-zhk" secondAttribute="trailing" constant="5" id="fEe-EP-yqH"/>
+                                    <constraint firstItem="yts-oN-gR2" firstAttribute="centerY" secondItem="rKT-NP-UhN" secondAttribute="centerY" id="jNM-cF-FAX"/>
+                                    <constraint firstAttribute="height" constant="43" id="mFE-IY-keb"/>
+                                </constraints>
+                            </view>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="my_stylePlay" translatesAutoresizingMaskIntoConstraints="NO" id="Mkw-iw-Ks4">
+                                <rect key="frame" x="170" y="8" width="24" height="24"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="24" id="Ras-2V-kR0"/>
+                                    <constraint firstAttribute="height" constant="24" id="t11-6Y-L5d"/>
+                                </constraints>
+                            </imageView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <constraints>
+                            <constraint firstItem="Mkw-iw-Ks4" firstAttribute="top" secondItem="f8A-sE-FUd" secondAttribute="top" constant="8" id="C83-yg-N5R"/>
+                            <constraint firstItem="XYP-cg-iwK" firstAttribute="top" secondItem="f8A-sE-FUd" secondAttribute="bottom" id="Htl-yg-MPt"/>
+                            <constraint firstAttribute="trailing" secondItem="f8A-sE-FUd" secondAttribute="trailing" id="MEs-Dd-gWQ"/>
+                            <constraint firstItem="f8A-sE-FUd" firstAttribute="top" secondItem="IMl-93-OW1" secondAttribute="top" id="Ogn-tF-aia"/>
+                            <constraint firstAttribute="trailing" secondItem="XYP-cg-iwK" secondAttribute="trailing" id="g7x-r7-KQ1"/>
+                            <constraint firstItem="f8A-sE-FUd" firstAttribute="leading" secondItem="IMl-93-OW1" secondAttribute="leading" id="gny-E9-RIw"/>
+                            <constraint firstAttribute="bottom" secondItem="XYP-cg-iwK" secondAttribute="bottom" id="kwJ-mB-2rT"/>
+                            <constraint firstItem="Mkw-iw-Ks4" firstAttribute="trailing" secondItem="f8A-sE-FUd" secondAttribute="trailing" constant="-8" id="pdC-Yz-YnC"/>
+                            <constraint firstItem="XYP-cg-iwK" firstAttribute="leading" secondItem="IMl-93-OW1" secondAttribute="leading" id="yeS-b9-fL2"/>
+                        </constraints>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                <real key="value" value="10"/>
+                            </userDefinedRuntimeAttribute>
+                        </userDefinedRuntimeAttributes>
+                    </view>
+                </subviews>
+            </view>
+            <viewLayoutGuide key="safeArea" id="SEy-5g-ep8"/>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="IMl-93-OW1" secondAttribute="bottom" id="RAS-r7-6mX"/>
+                <constraint firstItem="IMl-93-OW1" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="W0R-Ye-7yq"/>
+                <constraint firstAttribute="trailing" secondItem="IMl-93-OW1" secondAttribute="trailing" id="bRV-ai-pTH"/>
+                <constraint firstItem="IMl-93-OW1" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="njy-n5-D6u"/>
+            </constraints>
+            <size key="customSize" width="202" height="177"/>
+            <connections>
+                <outlet property="countLabel" destination="yts-oN-gR2" id="kd7-qB-Zyu"/>
+                <outlet property="coverImage" destination="f8A-sE-FUd" id="Iz4-fm-ubk"/>
+                <outlet property="teacherAvatar" destination="pmW-kc-zhk" id="ozc-HY-4WV"/>
+                <outlet property="teacherName" destination="rKT-NP-UhN" id="jdb-BK-x0e"/>
+            </connections>
+            <point key="canvasLocation" x="161.83206106870227" y="63.732394366197184"/>
+        </collectionViewCell>
+    </objects>
+    <resources>
+        <image name="my_stylePlay" width="24" height="24"/>
+        <image name="teacher_avatar" width="150" height="150"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageMienBodyView.m

@@ -348,6 +348,7 @@
     playModel.videoURL = [NSURL URLWithString:fileUrl];
     _wmPlayer.playerModel = playModel;
     _wmPlayer.delegate = self;
+    _wmPlayer.tintColor = THEMECOLOR;
     _bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
     _bgView.backgroundColor = [UIColor blackColor];
     [[UIApplication sharedApplication].keyWindow addSubview:_bgView];

+ 4 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/VipCourse/MinePageVIPCourseView.m

@@ -9,7 +9,7 @@
 #import "MinePageCourseTipsView.h"
 #import "MineCourseSettingView.h"
 #import "MinePageVipProgramCell.h"
-#import "MineVipProgramViewController.h"
+#import "KSBaseWKWebViewController.h"
 #import "CoursePargramListModel.h"
 #import "KSConfirmAlertView.h"
 
@@ -288,9 +288,9 @@
 
 - (void)settingCourseAction {
     // 设置VIP课程方案
-    MineVipProgramViewController *ctrl = [[MineVipProgramViewController alloc] init];
-    ctrl.isVipProgram = YES;
-    [self.naviController pushViewController:ctrl animated:YES];
+    KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
+    webCtrl.url = [NSString stringWithFormat:@"%@%@%@", WEBHOST, @"/#/practiceSetting", @"?tab=vip"];
+    [self.naviController pushViewController:webCtrl animated:YES];
 }
 
 - (void)courseTipsAction:(COURSE_TIPS_ACTION)action {