浏览代码

保存作品loading

Steven 6 月之前
父节点
当前提交
c299ccaadb

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

@@ -816,6 +816,9 @@
 		BC8C2C642824EB9000FBA5D5 /* NotiferHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC8C2C632824EB9000FBA5D5 /* NotiferHeadView.m */; };
 		BC8C2C662824EB9800FBA5D5 /* NotiferHeadView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC8C2C652824EB9800FBA5D5 /* NotiferHeadView.xib */; };
 		BC8C2C7A28264CF400FBA5D5 /* ReceiveEvaluateListController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC8C2C7928264CF400FBA5D5 /* ReceiveEvaluateListController.m */; };
+		BC8DA2592CD4AFD100D8EA32 /* student_refresh.json in Resources */ = {isa = PBXBuildFile; fileRef = BC8DA2582CD4AFD100D8EA32 /* student_refresh.json */; };
+		BC8DA25D2CD4BFE000D8EA32 /* KSAudioSaveAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = BC8DA25B2CD4BFE000D8EA32 /* KSAudioSaveAlert.m */; };
+		BC8DA25E2CD4BFE000D8EA32 /* KSAudioSaveAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC8DA25C2CD4BFE000D8EA32 /* KSAudioSaveAlert.xib */; };
 		BC9070A228C7159800237958 /* MyStyleNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9070A128C7159800237958 /* MyStyleNavView.m */; };
 		BC9070A428C7159F00237958 /* MyStyleNavView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC9070A328C7159F00237958 /* MyStyleNavView.xib */; };
 		BC9070A728C71C8700237958 /* MyCreateGroupHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9070A628C71C8700237958 /* MyCreateGroupHeadView.m */; };
@@ -2499,6 +2502,10 @@
 		BC8C2C652824EB9800FBA5D5 /* NotiferHeadView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NotiferHeadView.xib; sourceTree = "<group>"; };
 		BC8C2C7828264CF400FBA5D5 /* ReceiveEvaluateListController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReceiveEvaluateListController.h; sourceTree = "<group>"; };
 		BC8C2C7928264CF400FBA5D5 /* ReceiveEvaluateListController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ReceiveEvaluateListController.m; sourceTree = "<group>"; };
+		BC8DA2582CD4AFD100D8EA32 /* student_refresh.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = student_refresh.json; sourceTree = "<group>"; };
+		BC8DA25A2CD4BFE000D8EA32 /* KSAudioSaveAlert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KSAudioSaveAlert.h; sourceTree = "<group>"; };
+		BC8DA25B2CD4BFE000D8EA32 /* KSAudioSaveAlert.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KSAudioSaveAlert.m; sourceTree = "<group>"; };
+		BC8DA25C2CD4BFE000D8EA32 /* KSAudioSaveAlert.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KSAudioSaveAlert.xib; sourceTree = "<group>"; };
 		BC9070A028C7159800237958 /* MyStyleNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyStyleNavView.h; sourceTree = "<group>"; };
 		BC9070A128C7159800237958 /* MyStyleNavView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyStyleNavView.m; sourceTree = "<group>"; };
 		BC9070A328C7159F00237958 /* MyStyleNavView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyStyleNavView.xib; sourceTree = "<group>"; };
@@ -5259,6 +5266,9 @@
 			children = (
 				277935E927E32A930010E277 /* KSBaseWKWebViewController.h */,
 				277935EA27E32A930010E277 /* KSBaseWKWebViewController.m */,
+				BC8DA25A2CD4BFE000D8EA32 /* KSAudioSaveAlert.h */,
+				BC8DA25B2CD4BFE000D8EA32 /* KSAudioSaveAlert.m */,
+				BC8DA25C2CD4BFE000D8EA32 /* KSAudioSaveAlert.xib */,
 				BCA3369B2C942B340074DF75 /* KSSourceDownloadAlert.h */,
 				BCA3369D2C942B340074DF75 /* KSSourceDownloadAlert.m */,
 				BCA3369C2C942B340074DF75 /* KSSourceDownloadAlert.xib */,
@@ -6591,6 +6601,7 @@
 		BC9AA0D62ABC432400CD954D /* LoadingManager */ = {
 			isa = PBXGroup;
 			children = (
+				BC8DA2582CD4AFD100D8EA32 /* student_refresh.json */,
 				BC56C9682923736200AF301F /* KSHudLoagingManager.h */,
 				BC56C9692923736200AF301F /* KSHudLoagingManager.m */,
 				BC9AA0D32ABC430B00CD954D /* KSCustomLoadingView.h */,
@@ -7812,6 +7823,7 @@
 				BCA9CE3A27FD93EB00D558C6 /* AccompanyStudentEvaCell.xib in Resources */,
 				BCE6A09627F823DC00C97704 /* MinePageMusicCell.xib in Resources */,
 				BC4BCE722823A03A00522C8B /* AddressBottomView.xib in Resources */,
+				BC8DA25E2CD4BFE000D8EA32 /* KSAudioSaveAlert.xib in Resources */,
 				BCA353E0285976CF00377661 /* MusicRoomCourseInfoCell.xib in Resources */,
 				BC71D1F82887FDD40010F14B /* img_4.png in Resources */,
 				BCC5841228A9FA8100BAB4CF /* cloud_animation.json in Resources */,
@@ -7879,6 +7891,7 @@
 				BC71D2042887FDD40010F14B /* img_26.png in Resources */,
 				BCF7EB372C856C53006AA38C /* ScanLoginBodyView.xib in Resources */,
 				27F9CAFC27EC1AF3003E0FE4 /* ContractListCell.xib in Resources */,
+				BC8DA2592CD4AFD100D8EA32 /* student_refresh.json in Resources */,
 				BC31BF9F2B219C5700F7D538 /* WidgetFunctionView.xib in Resources */,
 				BC71D2032887FDD40010F14B /* img_24.png in Resources */,
 				BC71D1F52887FDD40010F14B /* img_17.png in Resources */,
@@ -8381,6 +8394,7 @@
 				BC7E770C2900DD8E00EB37AF /* HomeDragButton.m in Sources */,
 				BCE6A08B27F823A300C97704 /* AccompanyCourseCell.m in Sources */,
 				BCC9F42627F69BD200647449 /* KSWhiteboardView.m in Sources */,
+				BC8DA25D2CD4BFE000D8EA32 /* KSAudioSaveAlert.m in Sources */,
 				BCA193BE282B9866004A585D /* MinePageGroupModel.m in Sources */,
 				BCB633F827F6A18200ACFDCF /* KSTipsView.m in Sources */,
 				BC0A22B72847523E0065C1AB /* MemberBottomView.m in Sources */,

+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/PlayerImage/progress_line.imageset/Contents.json

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

二进制
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/PlayerImage/progress_line.imageset/progress_line@2x.png


二进制
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/PlayerImage/progress_line.imageset/progress_line@3x.png


+ 27 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/WebView/KSAudioSaveAlert.h

@@ -0,0 +1,27 @@
+//
+//  KSAudioSaveAlert.h
+//  StudentDaya
+//
+//  Created by 王智 on 2024/10/22.
+//  Copyright © 2024 DayaMusic. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef void(^AudioSaveTipsCallback)(void);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KSAudioSaveAlert : UIView
+
++ (instancetype)shareInstance;
+
+- (void)configWithDesc:(NSString *)desc;
+
+- (void)actionCallbackCancel:(AudioSaveTipsCallback)cancel copyCallback:(AudioSaveTipsCallback)copyBlock sure:(AudioSaveTipsCallback)sure;
+
+- (void)showAlert;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 94 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/WebView/KSAudioSaveAlert.m

@@ -0,0 +1,94 @@
+//
+//  KSAudioSaveAlert.m
+//  StudentDaya
+//
+//  Created by 王智 on 2024/10/22.
+//  Copyright © 2024 DayaMusic. All rights reserved.
+//
+
+#import "KSAudioSaveAlert.h"
+
+@interface KSAudioSaveAlert ()
+
+@property (weak, nonatomic) IBOutlet UIView *containerView;
+
+@property (weak, nonatomic) IBOutlet UILabel *descLabel;
+
+@property (nonatomic, strong) UITapGestureRecognizer *gesture;
+
+@property (nonatomic, copy) AudioSaveTipsCallback cancelCallback;
+
+@property (nonatomic, copy) AudioSaveTipsCallback copyBlock;
+
+@property (nonatomic, copy) AudioSaveTipsCallback sureCallback;
+
+@end
+
+@implementation KSAudioSaveAlert
+
++ (instancetype)shareInstance {
+    KSAudioSaveAlert *view = [[[NSBundle mainBundle] loadNibNamed:@"KSAudioSaveAlert" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)configWithDesc:(NSString *)desc {
+    if ([NSString isEmptyString:desc]) {
+        desc = @"";
+    }
+    self.descLabel.text = desc;
+}
+
+- (void)actionCallbackCancel:(AudioSaveTipsCallback)cancel copyCallback:(AudioSaveTipsCallback)copyBlock sure:(AudioSaveTipsCallback)sure {
+    if (cancel) {
+        self.cancelCallback = cancel;
+    }
+    if (copyBlock) {
+        self.copyBlock = copyBlock;
+    }
+    if (sure) {
+        self.sureCallback = sure;
+    }
+}
+
+- (void)showAlert {
+    UIView *displayView = [NSObject getKeyWindow];
+    [displayView addSubview:self];
+    [self mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.top.bottom.mas_equalTo(displayView);
+    }];
+}
+
+- (IBAction)copyActipn:(id)sender {
+    if (self.copyBlock) {
+        self.copyBlock();
+    }
+}
+
+
+- (void)removeAlert {
+    [self removeFromSuperview];
+
+}
+- (IBAction)cancelAction:(id)sender {
+    [self removeAlert];
+    if (self.cancelCallback) {
+        self.cancelCallback();
+    }
+}
+
+- (IBAction)sureAction:(id)sender {
+    [self removeAlert];
+    if (self.sureCallback) {
+        self.sureCallback();
+    }
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 159 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/WebView/KSAudioSaveAlert.xib

@@ -0,0 +1,159 @@
+<?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" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="KSAudioSaveAlert">
+            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xe4-Yn-OOY">
+                    <rect key="frame" x="53" y="329.66666666666669" width="287" height="193.00000000000006"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="保存成功" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="o6J-fv-hWI">
+                            <rect key="frame" x="107.66666666666666" y="20" width="71.666666666666657" height="25"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="25" id="HHc-pd-UbC"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/>
+                            <color key="textColor" red="0.074509803921568626" green="0.078431372549019607" blue="0.082352941176470587" 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="x6T-A9-nEf">
+                            <rect key="frame" x="20" y="65" width="159" height="26"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="26" id="Und-rZ-ppE"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MBZ-qp-YmC">
+                            <rect key="frame" x="20" y="91" width="208" height="26"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="26" id="LQI-eS-Xqq"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="复制" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="k1K-E4-NQ8">
+                            <rect key="frame" x="233" y="91" width="34" height="26"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="34" id="Ch5-bJ-8ak"/>
+                                <constraint firstAttribute="height" constant="26" id="Wma-Vy-wgQ"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <color key="textColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="f37-Yq-0Oz">
+                            <rect key="frame" x="20" y="137" width="116" height="36"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="36" id="Ktl-X3-Qy7"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <state key="normal" title="取消">
+                                <color key="titleColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </state>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <integer 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.85882352939999995" green="0.85882352939999995" blue="0.85882352939999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                            <connections>
+                                <action selector="cancelAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="WHh-eP-YNQ"/>
+                            </connections>
+                        </button>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gkh-Y1-6kL">
+                            <rect key="frame" x="151" y="137" width="116" 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" weight="medium" pointSize="16"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <state key="normal" title="打开音频"/>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <integer key="value" value="18"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                            <connections>
+                                <action selector="sureAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="Otz-UP-Ab2"/>
+                            </connections>
+                        </button>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WEm-0X-7Q9">
+                            <rect key="frame" x="230" y="84" width="40" height="40"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="40" id="1t4-VK-XdX"/>
+                                <constraint firstAttribute="height" constant="40" id="TBC-4v-Qll"/>
+                            </constraints>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <connections>
+                                <action selector="copyActipn:" destination="iN0-l3-epB" eventType="touchUpInside" id="szQ-HE-8YE"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                    <constraints>
+                        <constraint firstAttribute="trailing" secondItem="gkh-Y1-6kL" secondAttribute="trailing" constant="20" id="3R7-id-i1O"/>
+                        <constraint firstItem="gkh-Y1-6kL" firstAttribute="width" secondItem="f37-Yq-0Oz" secondAttribute="width" id="5nn-F6-hxp"/>
+                        <constraint firstItem="gkh-Y1-6kL" firstAttribute="leading" secondItem="f37-Yq-0Oz" secondAttribute="trailing" constant="15" id="6RL-tX-G7Q"/>
+                        <constraint firstItem="MBZ-qp-YmC" firstAttribute="top" secondItem="x6T-A9-nEf" secondAttribute="bottom" id="7JF-sB-6Oy"/>
+                        <constraint firstItem="o6J-fv-hWI" firstAttribute="centerX" secondItem="xe4-Yn-OOY" secondAttribute="centerX" id="7lT-WN-sFN"/>
+                        <constraint firstItem="gkh-Y1-6kL" firstAttribute="height" secondItem="f37-Yq-0Oz" secondAttribute="height" id="8tf-fG-Ra1"/>
+                        <constraint firstItem="x6T-A9-nEf" firstAttribute="leading" secondItem="xe4-Yn-OOY" secondAttribute="leading" constant="20" id="CwH-WO-xrj"/>
+                        <constraint firstAttribute="trailing" secondItem="k1K-E4-NQ8" secondAttribute="trailing" constant="20" id="Dkz-8a-GDV"/>
+                        <constraint firstAttribute="bottom" secondItem="gkh-Y1-6kL" secondAttribute="bottom" constant="20" id="EwH-aE-swR"/>
+                        <constraint firstAttribute="width" constant="287" id="Jhi-Jf-l2j"/>
+                        <constraint firstItem="k1K-E4-NQ8" firstAttribute="leading" secondItem="MBZ-qp-YmC" secondAttribute="trailing" constant="5" id="Jxc-do-ldL"/>
+                        <constraint firstItem="k1K-E4-NQ8" firstAttribute="centerY" secondItem="MBZ-qp-YmC" secondAttribute="centerY" id="KQG-Mt-zg0"/>
+                        <constraint firstItem="k1K-E4-NQ8" firstAttribute="centerY" secondItem="WEm-0X-7Q9" secondAttribute="centerY" id="Nx3-do-zPj"/>
+                        <constraint firstItem="k1K-E4-NQ8" firstAttribute="centerX" secondItem="WEm-0X-7Q9" secondAttribute="centerX" id="PY3-1H-ieR"/>
+                        <constraint firstAttribute="bottom" secondItem="f37-Yq-0Oz" secondAttribute="bottom" constant="20" id="PgA-Z2-gp2"/>
+                        <constraint firstItem="f37-Yq-0Oz" firstAttribute="leading" secondItem="xe4-Yn-OOY" secondAttribute="leading" constant="20" id="R0W-hh-81O"/>
+                        <constraint firstAttribute="height" constant="193" id="SNm-jf-xl5"/>
+                        <constraint firstItem="o6J-fv-hWI" firstAttribute="top" secondItem="xe4-Yn-OOY" secondAttribute="top" constant="20" id="aXt-Zg-iyp"/>
+                        <constraint firstItem="x6T-A9-nEf" firstAttribute="top" secondItem="o6J-fv-hWI" secondAttribute="bottom" constant="20" id="oEf-lk-nZF"/>
+                        <constraint firstItem="MBZ-qp-YmC" firstAttribute="leading" secondItem="x6T-A9-nEf" secondAttribute="leading" id="tlK-tk-kqx"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <integer key="value" value="16"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+            </subviews>
+            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="xe4-Yn-OOY" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="YFG-FY-1V4"/>
+                <constraint firstItem="xe4-Yn-OOY" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="o6o-sh-lz4"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="containerView" destination="xe4-Yn-OOY" id="RLE-xZ-JzK"/>
+                <outlet property="descLabel" destination="MBZ-qp-YmC" id="A0k-Za-Sdo"/>
+            </connections>
+            <point key="canvasLocation" x="42" y="20"/>
+        </view>
+    </objects>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 37 - 10
KulexiuForTeacher/KulexiuForTeacher/Common/Base/WebView/KSBaseWKWebViewController.m

@@ -40,6 +40,8 @@
 #import "KSNewAlertView.h"
 #import "KSLogManager.h"
 #import "KSSourceDownloadAlert.h"
+#import "KSAudioSaveAlert.h"
+
 // 加载UI
 #import "AccompanyLoadingView.h"
 
@@ -834,6 +836,7 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
     // 保存到文件目录下
     KSDocumentViewController *documentPickerVC = [[KSDocumentViewController alloc] initWithURL:fileUrl inMode:UIDocumentPickerModeExportToService];
     documentPickerVC.buttonColor = THEMECOLOR;
+    documentPickerVC.currentType = KSDOCUMENT_TYPE_DOWNLOADFILE;
     // 设置代理
     documentPickerVC.delegate = self;
     // 设置模态弹出方式
@@ -932,12 +935,20 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
 }
 
 - (void)saveFileToPhone:(NSURL *)fileUrl {
+    // 判断是否是音频
+    AVAsset * asset =[AVAsset assetWithURL:fileUrl];
+    KSDOCUMENT_TYPE currentType = KSDOCUMENT_TYPE_DOWNLOADFILE;
+    if ([asset tracksWithMediaType:AVMediaTypeAudio].count > 0) {
+        currentType = KSDOCUMENT_TYPE_DOWNLOADAUDIO;
+    }
+    
     self.isDownloadFile = YES;
     self.downloadFileUrl = fileUrl;
     
     KSDocumentViewController *documentPicker = [[KSDocumentViewController alloc] initWithURL:fileUrl inMode:UIDocumentPickerModeExportToService];
     documentPicker.buttonColor = THEMECOLOR;
     documentPicker.delegate = self;
+    documentPicker.currentType = currentType;
     documentPicker.modalPresentationStyle = UIModalPresentationFormSheet;
     [self presentViewController:documentPicker animated:YES completion:nil];
 }
@@ -1005,6 +1016,7 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
     KSDocumentViewController *documentPickerViewController = [[KSDocumentViewController alloc] initWithDocumentTypes:documentTypes inMode:UIDocumentPickerModeImport];
     documentPickerViewController.buttonColor = THEMECOLOR;
     documentPickerViewController.delegate = self;
+    documentPickerViewController.currentType = KSDOCUMENT_TYPE_UPLOAD;
     documentPickerViewController.modalPresentationStyle = UIModalPresentationFullScreen;
     [self presentViewController:documentPickerViewController animated:YES completion:nil];
 }
@@ -1706,16 +1718,31 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
         
         NSURL *descUrl = [urls firstObject];
         NSString *desc = [descUrl absoluteString];
-        KSSourceDownloadAlert *alertView = [KSSourceDownloadAlert shareInstance];
-        [alertView configWithDesc:desc];
-        [alertView actionCallbackCancel:^{
-            
-        } copyCallback:^{
-            [self copyAction:desc];
-        } sure:^{
-            [self openFileSource:descUrl];
-        }];
-        [alertView showAlert];
+        KSDocumentViewController *ctrl = (KSDocumentViewController *)controller;
+        if (ctrl.currentType == KSDOCUMENT_TYPE_DOWNLOADAUDIO) {
+            KSAudioSaveAlert *alert = [KSAudioSaveAlert shareInstance];
+            [alert configWithDesc:desc];
+            [alert actionCallbackCancel:^{
+                
+            } copyCallback:^{
+                [self copyAction:desc];
+            } sure:^{
+                [self openFileSource:descUrl];
+            }];
+            [alert showAlert];
+        }
+        else {
+            KSSourceDownloadAlert *alertView = [KSSourceDownloadAlert shareInstance];
+            [alertView configWithDesc:desc];
+            [alertView actionCallbackCancel:^{
+                
+            } copyCallback:^{
+                [self copyAction:desc];
+            } sure:^{
+                [self openFileSource:descUrl];
+            }];
+            [alertView showAlert];
+        }
     }
     else {
         NSURL *url =  [urls lastObject];

+ 27 - 7
KulexiuForTeacher/KulexiuForTeacher/Common/LoadingManager/KSProgressLoadingView.m

@@ -6,16 +6,18 @@
 //
 
 #import "KSProgressLoadingView.h"
+#import <Lottie/Lottie.h>
 
 @interface KSProgressLoadingView ()
+
+@property (weak, nonatomic) IBOutlet UIView *animationContainer;
+@property (nonatomic, strong) LOTAnimationView *animationView;
 @property (weak, nonatomic) IBOutlet UIView *progressView;
 @property (weak, nonatomic) IBOutlet UIImageView *progressFillImage;
 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *imageWidth;
 
 @property (weak, nonatomic) IBOutlet UILabel *progressTipsLabel;
 
-@property (weak, nonatomic) IBOutlet NSLayoutConstraint *leadingSpace;
-
 @property (nonatomic, assign) NSInteger progress;
 
 @end
@@ -24,7 +26,6 @@
 - (void)awakeFromNib {
     [super awakeFromNib];
     self.progress = 0;
-    self.leadingSpace.constant = 0.0f;
 }
 
 + (instancetype)shareInstance {
@@ -37,7 +38,6 @@
     NSInteger space = progress * 280;
     [UIView animateWithDuration:0.5f animations:^{
         self.progress = space;
-        self.leadingSpace.constant = space;
     }];
 }
 
@@ -45,14 +45,12 @@
     self.progressTipsLabel.text = tipsMessage;
     NSInteger space = progress * 280;
     self.progress = space;
-    self.leadingSpace.constant = space;
 }
 
 - (void)configProgressWithText:(NSString *)tipsMessage progress:(CGFloat)progress promptCompletion:(void(^)(void))promptCompletion {
     self.progressTipsLabel.text = tipsMessage;
     NSInteger space = progress * 280;
     self.progress = space;
-    self.leadingSpace.constant = space;
     [UIView animateWithDuration:0.5 delay:1 options:UIViewAnimationOptionCurveEaseInOut animations:^{
         
     } completion:^(BOOL finished) {
@@ -62,20 +60,31 @@
 
 - (void)showLoadingView {
     UIWindow *windows = [NSObject getKeyWindow];
+    if ([windows.subviews containsObject:self]) {
+        return;
+    }
     [windows addSubview:self];
     [self mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.right.top.bottom.mas_equalTo(windows);
     }];
+    [self.animationContainer addSubview:self.animationView];
+    [self.animationView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.top.bottom.mas_equalTo(self.animationContainer);
+    }];
+    [self.animationView play];
 }
 
 - (void)hideLoadingView {
+    if (self.animationView.isAnimationPlaying) {
+        [self.animationView stop];
+    }
     [self removeFromSuperview];
 }
 
 - (void)setProgress:(NSInteger)progress {
     _progress = progress;
     CGFloat width = progress;
-    [self.progressFillImage setImage:[self createGradientImageWithColor:@[HexRGB(0x44F1D0),HexRGB(0x2DC7AA)] rect:CGRectMake(0, 0, width, 8) start:CGPointMake(0.41, 0) end:CGPointMake(0.41, 1)]];
+    [self.progressFillImage setImage:[self createGradientImageWithColor:@[HexRGB(0x3CE2C3),HexRGB(0x45C7AE)] rect:CGRectMake(0, 0, width, 6) start:CGPointMake(1, 0.5) end:CGPointMake(0, 0.5)]];
     self.imageWidth.constant = width;
 }
 
@@ -101,6 +110,17 @@
     return outputImage;
 }
 
+- (LOTAnimationView *)animationView {
+    if (!_animationView) {
+        _animationView = [LOTAnimationView animationWithFilePath:[[NSBundle mainBundle] pathForResource:@"student_refresh" ofType:@"json"]];
+        //2.加载后台给的json(url)
+        _animationView.loopAnimation = YES;
+        _animationView.contentMode = UIViewContentModeScaleAspectFill;
+        _animationView.animationSpeed = 1.0;
+    }
+    return _animationView;
+}
+
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 51 - 63
KulexiuForTeacher/KulexiuForTeacher/Common/LoadingManager/KSProgressLoadingView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22155" 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_12" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -13,83 +13,75 @@
             <rect key="frame" x="0.0" y="0.0" width="695" height="345"/>
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
-                <view alpha="0.71999999999999997" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bF6-xd-1LF">
-                    <rect key="frame" x="189.66666666666663" y="146.66666666666666" width="316" height="52"/>
-                    <color key="backgroundColor" red="0.52941176470588236" green="0.52941176470588236" blue="0.52941176470588236" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                    <constraints>
-                        <constraint firstAttribute="width" constant="316" id="1wt-uU-3Zy"/>
-                        <constraint firstAttribute="height" constant="52" id="Sx2-oq-9c8"/>
-                    </constraints>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="26"/>
-                        </userDefinedRuntimeAttribute>
-                    </userDefinedRuntimeAttributes>
-                </view>
-                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SUI-Ti-MzO">
-                    <rect key="frame" x="207.66666666666663" y="166.66666666666666" width="280" height="8"/>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ITq-85-NI6">
+                    <rect key="frame" x="211" y="112" width="273" height="121"/>
                     <subviews>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="dij-Zh-MfT">
-                            <rect key="frame" x="0.0" y="0.0" width="0.0" height="8"/>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Be7-Wp-DtC">
+                            <rect key="frame" x="76.666666666666686" y="0.0" width="120" height="72"/>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="120" id="mFY-8f-YJG"/>
+                                <constraint firstAttribute="width" secondItem="Be7-Wp-DtC" secondAttribute="height" multiplier="10:6" id="v6l-z5-lt5"/>
+                            </constraints>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SUI-Ti-MzO">
+                            <rect key="frame" x="0.0" y="78" width="273" height="6"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="dij-Zh-MfT">
+                                    <rect key="frame" x="0.0" y="0.0" width="0.0" height="6"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" id="wgg-ol-s5w"/>
+                                    </constraints>
+                                </imageView>
+                            </subviews>
+                            <color key="backgroundColor" red="0.58039215686274503" green="0.67450980392156867" blue="0.76862745098039209" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
                             <constraints>
-                                <constraint firstAttribute="width" id="wgg-ol-s5w"/>
+                                <constraint firstAttribute="width" constant="273" id="6W3-xW-Afz"/>
+                                <constraint firstItem="dij-Zh-MfT" firstAttribute="leading" secondItem="SUI-Ti-MzO" secondAttribute="leading" id="BFx-PL-EXX"/>
+                                <constraint firstAttribute="height" constant="6" id="Rxe-2I-dzd"/>
+                                <constraint firstAttribute="bottom" secondItem="dij-Zh-MfT" secondAttribute="bottom" id="Tb8-Rw-DUH"/>
+                                <constraint firstItem="dij-Zh-MfT" firstAttribute="top" secondItem="SUI-Ti-MzO" secondAttribute="top" id="w7a-wJ-zNa"/>
                             </constraints>
                             <userDefinedRuntimeAttributes>
                                 <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                    <real key="value" value="4"/>
+                                    <real key="value" value="3"/>
                                 </userDefinedRuntimeAttribute>
                             </userDefinedRuntimeAttributes>
-                        </imageView>
+                        </view>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rev-2X-b5J">
+                            <rect key="frame" x="136.66666666666669" y="100" width="0.0" height="21"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="21" id="heZ-tG-3dI"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="15"/>
+                            <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <nil key="highlightedColor"/>
+                        </label>
                     </subviews>
-                    <color key="backgroundColor" red="0.85490196078431369" green="0.85490196078431369" blue="0.85490196078431369" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     <constraints>
-                        <constraint firstAttribute="width" constant="280" id="6W3-xW-Afz"/>
-                        <constraint firstItem="dij-Zh-MfT" firstAttribute="leading" secondItem="SUI-Ti-MzO" secondAttribute="leading" id="BFx-PL-EXX"/>
-                        <constraint firstAttribute="height" constant="8" id="Rxe-2I-dzd"/>
-                        <constraint firstAttribute="bottom" secondItem="dij-Zh-MfT" secondAttribute="bottom" id="Tb8-Rw-DUH"/>
-                        <constraint firstItem="dij-Zh-MfT" firstAttribute="top" secondItem="SUI-Ti-MzO" secondAttribute="top" id="w7a-wJ-zNa"/>
+                        <constraint firstAttribute="bottom" secondItem="Rev-2X-b5J" secondAttribute="bottom" id="5Mq-xt-ca8"/>
+                        <constraint firstItem="Rev-2X-b5J" firstAttribute="centerX" secondItem="ITq-85-NI6" secondAttribute="centerX" id="QtB-4u-AlL"/>
+                        <constraint firstAttribute="trailing" secondItem="SUI-Ti-MzO" secondAttribute="trailing" id="Rg4-bG-IWS"/>
+                        <constraint firstItem="SUI-Ti-MzO" firstAttribute="top" secondItem="Be7-Wp-DtC" secondAttribute="bottom" constant="6" id="URE-RD-Ejs"/>
+                        <constraint firstItem="Be7-Wp-DtC" firstAttribute="centerX" secondItem="ITq-85-NI6" secondAttribute="centerX" id="eke-SG-X4n"/>
+                        <constraint firstItem="Rev-2X-b5J" firstAttribute="top" secondItem="SUI-Ti-MzO" secondAttribute="bottom" constant="16" id="gm3-IB-8ti"/>
+                        <constraint firstItem="SUI-Ti-MzO" firstAttribute="leading" secondItem="ITq-85-NI6" secondAttribute="leading" id="lmy-n3-r7P"/>
+                        <constraint firstItem="Be7-Wp-DtC" firstAttribute="top" secondItem="ITq-85-NI6" secondAttribute="top" id="nhz-Gc-zBC"/>
                     </constraints>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="4"/>
-                        </userDefinedRuntimeAttribute>
-                    </userDefinedRuntimeAttributes>
                 </view>
-                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="progressLoading_bg" translatesAutoresizingMaskIntoConstraints="NO" id="lOs-av-owS">
-                    <rect key="frame" x="231.66666666666663" y="106.66666666666669" width="232" height="52"/>
-                </imageView>
-                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="progress_dot" translatesAutoresizingMaskIntoConstraints="NO" id="tfN-3g-Eip">
-                    <rect key="frame" x="188" y="149.66666666666666" width="39" height="42"/>
-                </imageView>
-                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rev-2X-b5J">
-                    <rect key="frame" x="347.66666666666669" y="210.66666666666666" width="0.0" height="20"/>
-                    <constraints>
-                        <constraint firstAttribute="height" constant="20" id="heZ-tG-3dI"/>
-                    </constraints>
-                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
-                    <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                    <nil key="highlightedColor"/>
-                </label>
             </subviews>
             <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
             <constraints>
-                <constraint firstItem="tfN-3g-Eip" firstAttribute="centerY" secondItem="SUI-Ti-MzO" secondAttribute="centerY" id="4iR-2i-2iO"/>
-                <constraint firstItem="SUI-Ti-MzO" firstAttribute="top" secondItem="lOs-av-owS" secondAttribute="bottom" constant="8" id="G7Z-PO-jYn"/>
-                <constraint firstItem="SUI-Ti-MzO" firstAttribute="top" secondItem="bF6-xd-1LF" secondAttribute="top" constant="20" id="Krm-0h-8e9"/>
-                <constraint firstItem="Rev-2X-b5J" firstAttribute="top" secondItem="bF6-xd-1LF" secondAttribute="bottom" constant="12" id="NLa-Co-q9p"/>
-                <constraint firstItem="SUI-Ti-MzO" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="P90-9i-wGM"/>
-                <constraint firstItem="bF6-xd-1LF" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="Rtl-2b-xtU"/>
-                <constraint firstItem="tfN-3g-Eip" firstAttribute="centerX" secondItem="SUI-Ti-MzO" secondAttribute="leading" id="XYt-JF-0av"/>
-                <constraint firstItem="bF6-xd-1LF" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="eSt-r7-R85"/>
-                <constraint firstItem="lOs-av-owS" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="raj-wp-VON"/>
-                <constraint firstItem="Rev-2X-b5J" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="uHO-oY-pg3"/>
+                <constraint firstItem="ITq-85-NI6" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="iO5-RZ-hj6"/>
+                <constraint firstItem="ITq-85-NI6" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="jTp-JA-m0F"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <connections>
+                <outlet property="animationContainer" destination="Be7-Wp-DtC" id="TpE-to-PgB"/>
                 <outlet property="imageWidth" destination="wgg-ol-s5w" id="ghk-aM-7Mc"/>
-                <outlet property="leadingSpace" destination="XYt-JF-0av" id="ugO-sL-Iph"/>
                 <outlet property="progressFillImage" destination="dij-Zh-MfT" id="g8N-Be-ems"/>
                 <outlet property="progressTipsLabel" destination="Rev-2X-b5J" id="NRr-kM-4Fg"/>
                 <outlet property="progressView" destination="SUI-Ti-MzO" id="dbn-Ug-C4y"/>
@@ -97,8 +89,4 @@
             <point key="canvasLocation" x="287.78625954198475" y="-32.74647887323944"/>
         </view>
     </objects>
-    <resources>
-        <image name="progressLoading_bg" width="232" height="52"/>
-        <image name="progress_dot" width="39" height="42"/>
-    </resources>
 </document>

文件差异内容过多而无法显示
+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/LoadingManager/student_refresh.json


+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/MediaMerge/AudioMerge/KSMediaMergeView.m

@@ -1041,6 +1041,7 @@
 
 - (void)saveCurrentDraft:(BOOL)needBack {
     self.hasModify = NO;
+    self.hasSaveDraft = YES;
     if (self.isVideoPlay) {
         if (self.remoteVideoUrl) {
             // 保存草稿

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/configuration/Config-test.xcconfig

@@ -10,7 +10,7 @@
 
 REQUEST_DOMAIN = @"test.colexiu.com"
 ACCOMPANY_DOMAIN = @"test.colexiu.com"
-SOCKET_DOMAIN = @"test.kt.colexiu.com/audioAnalysis_kt"
+SOCKET_DOMAIN = @"test.colexiu.com/audioAnalysis"
 WHITE_BOARD = @"test.gym.lexiaoya.cn"
 OPEN_DOMAIN = @"test.resource.colexiu.com"
 

部分文件因为文件数量过多而无法显示