Переглянути джерело

1.自定义课程规划滚动条

Steven 3 місяців тому
батько
коміт
8395c8ddf3

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/xcshareddata/xcschemes/KulexiuForTeacher.xcscheme

@@ -52,7 +52,7 @@
       </Testables>
    </TestAction>
    <LaunchAction
-      buildConfiguration = "TEST"
+      buildConfiguration = "DEV"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       launchStyle = "0"

+ 0 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Course/Controller/CourseViewController.m

@@ -439,10 +439,6 @@
 }
 
 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
-    TableCourseModel *model = self.dataArray[indexPath.row];
-    if ([model.courseType isEqualToString:@"PIANO_ROOM_CLASS"]) {
-       return 127.0f;
-    }
     return 137.0f;
 }
 

+ 13 - 13
KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseForLiveCell.xib

@@ -11,7 +11,7 @@
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
-        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="159" id="KGk-i7-Jjw" customClass="CourseForLiveCell">
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="137" id="KGk-i7-Jjw" customClass="CourseForLiveCell">
             <rect key="frame" x="0.0" y="0.0" width="394" height="137"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
@@ -51,10 +51,10 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="lesson_Live" translatesAutoresizingMaskIntoConstraints="NO" id="wA2-zs-RYl">
-                                <rect key="frame" x="11" y="56" width="47" height="47"/>
+                                <rect key="frame" x="11" y="55" width="54" height="54"/>
                                 <constraints>
-                                    <constraint firstAttribute="width" constant="47" id="9Wg-OO-U4i"/>
-                                    <constraint firstAttribute="height" constant="47" id="uww-MX-dub"/>
+                                    <constraint firstAttribute="width" constant="54" id="9Wg-OO-U4i"/>
+                                    <constraint firstAttribute="height" constant="54" id="uww-MX-dub"/>
                                 </constraints>
                                 <userDefinedRuntimeAttributes>
                                     <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -63,16 +63,16 @@
                                 </userDefinedRuntimeAttributes>
                             </imageView>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管直播课·第三课" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dEp-ou-JBA">
-                                <rect key="frame" x="68" y="56" width="155" height="24"/>
+                                <rect key="frame" x="75" y="57" width="155" height="22"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="24" id="fXZ-Y5-AoA"/>
+                                    <constraint firstAttribute="height" constant="22" id="fXZ-Y5-AoA"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
-                                <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
+                                <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EoV-cQ-MON">
-                                <rect key="frame" x="68" y="83" width="43" height="20"/>
+                                <rect key="frame" x="75" y="87" width="43" height="20"/>
                                 <subviews>
                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EmG-Yo-nbA">
                                         <rect key="frame" x="5" y="0.0" width="33" height="20"/>
@@ -96,7 +96,7 @@
                                 </userDefinedRuntimeAttributes>
                             </view>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2TM-qv-v7e">
-                                <rect key="frame" x="228" y="53" width="30" height="30"/>
+                                <rect key="frame" x="235" y="53" width="30" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="30" id="lbN-u0-SFA"/>
                                     <constraint firstAttribute="height" constant="30" id="x6Y-49-gGY"/>
@@ -127,7 +127,7 @@
                                 </connections>
                             </button>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MTB-cE-tDv">
-                                <rect key="frame" x="116" y="83" width="158" height="20"/>
+                                <rect key="frame" x="123" y="87" width="151" height="20"/>
                                 <subviews>
                                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Nzy-gR-bLh">
                                         <rect key="frame" x="0.0" y="4.5" width="1" height="11"/>
@@ -162,19 +162,19 @@
                             <constraint firstItem="EoV-cQ-MON" firstAttribute="leading" secondItem="dEp-ou-JBA" secondAttribute="leading" id="7Vb-7S-FZM"/>
                             <constraint firstItem="7HA-oy-GhL" firstAttribute="centerY" secondItem="T9A-D2-1YE" secondAttribute="centerY" id="7cG-kE-7oR"/>
                             <constraint firstItem="2TM-qv-v7e" firstAttribute="leading" secondItem="dEp-ou-JBA" secondAttribute="trailing" constant="5" id="BMA-h3-EFf"/>
-                            <constraint firstItem="EoV-cQ-MON" firstAttribute="bottom" secondItem="wA2-zs-RYl" secondAttribute="bottom" id="Chd-et-KWm"/>
                             <constraint firstAttribute="bottom" secondItem="bRl-1p-cZu" secondAttribute="bottom" constant="20" id="DSL-E3-U1J"/>
                             <constraint firstItem="T9A-D2-1YE" firstAttribute="centerY" secondItem="pTS-nC-xAK" secondAttribute="centerY" id="Hlv-G6-Ihl"/>
                             <constraint firstAttribute="trailing" secondItem="5Lp-rU-nqx" secondAttribute="trailing" constant="10" id="IrU-1o-C7S"/>
                             <constraint firstItem="7HA-oy-GhL" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="T9A-D2-1YE" secondAttribute="trailing" constant="10" id="LMB-sX-uzM"/>
                             <constraint firstItem="wA2-zs-RYl" firstAttribute="leading" secondItem="K4l-Dq-CXi" secondAttribute="leading" constant="11" id="Lc0-sK-oXd"/>
-                            <constraint firstItem="wA2-zs-RYl" firstAttribute="top" secondItem="5Lp-rU-nqx" secondAttribute="bottom" constant="17" id="MsY-pI-vsy"/>
+                            <constraint firstItem="wA2-zs-RYl" firstAttribute="top" secondItem="5Lp-rU-nqx" secondAttribute="bottom" constant="16" id="MsY-pI-vsy"/>
                             <constraint firstAttribute="trailing" secondItem="bRl-1p-cZu" secondAttribute="trailing" constant="12" id="OK3-7Z-Oyp"/>
                             <constraint firstItem="T9A-D2-1YE" firstAttribute="leading" secondItem="pTS-nC-xAK" secondAttribute="trailing" constant="7" id="OQD-n7-8U1"/>
-                            <constraint firstItem="dEp-ou-JBA" firstAttribute="top" secondItem="wA2-zs-RYl" secondAttribute="top" id="OSg-qL-j0d"/>
+                            <constraint firstItem="dEp-ou-JBA" firstAttribute="top" secondItem="wA2-zs-RYl" secondAttribute="top" constant="2" id="OSg-qL-j0d"/>
                             <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="2TM-qv-v7e" secondAttribute="trailing" constant="11" id="RdO-od-8Vv"/>
                             <constraint firstAttribute="trailing" secondItem="7HA-oy-GhL" secondAttribute="trailing" constant="11" id="Whn-GB-iyS"/>
                             <constraint firstItem="5Lp-rU-nqx" firstAttribute="top" secondItem="pTS-nC-xAK" secondAttribute="bottom" constant="10" id="ZN2-we-wfB"/>
+                            <constraint firstItem="EoV-cQ-MON" firstAttribute="top" secondItem="dEp-ou-JBA" secondAttribute="bottom" constant="8" id="ZXp-ee-YCa"/>
                             <constraint firstItem="5Lp-rU-nqx" firstAttribute="leading" secondItem="K4l-Dq-CXi" secondAttribute="leading" constant="10" id="jA3-t4-xid"/>
                             <constraint firstItem="pTS-nC-xAK" firstAttribute="leading" secondItem="K4l-Dq-CXi" secondAttribute="leading" constant="11" id="kAp-53-8XF"/>
                             <constraint firstItem="pTS-nC-xAK" firstAttribute="top" secondItem="K4l-Dq-CXi" secondAttribute="top" constant="12" id="o1E-Us-bQ3"/>

+ 64 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseGroupView/CourseGroupPlanDescView.m

@@ -9,20 +9,38 @@
 
 @interface CourseGroupPlanDescView ()<UITextViewDelegate>
 
+@property (weak, nonatomic) IBOutlet UIView *textBgView;
+
 @property (weak, nonatomic) IBOutlet UITextView *textView;
 
 @property (nonatomic, copy) ModifyGroupPlanCallback callback;
 
+@property (nonatomic, strong) UIView *customScollBar;
+
+@property (nonatomic, assign) CGFloat scrollBarHeight;
+
 @end
 
 @implementation CourseGroupPlanDescView
+
 - (void)awakeFromNib {
     [super awakeFromNib];
     self.textView.delegate = self;
     self.textView.textContainer.lineFragmentPadding = 0;
     self.textView.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 4);
+    [self.textBgView addSubview:self.customScollBar];
+    self.scrollBarHeight = 43.0f;
+    [self.customScollBar mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(self.textBgView.mas_right);
+        make.width.mas_equalTo(3);
+        make.height.mas_equalTo(self.scrollBarHeight);
+        make.top.mas_equalTo(self.textBgView.mas_top);
+    }];
+    self.customScollBar.hidden = YES;
 }
 
+
+
 + (instancetype)sharedInstance {
     CourseGroupPlanDescView *view = [[[NSBundle mainBundle] loadNibNamed:@"CourseGroupPlanDescView" owner:nil options:nil] firstObject];
     return view;
@@ -34,6 +52,10 @@
     CGFloat baselineOffset = [CourseGroupPlanDescView getBaseOffline:[UIFont systemFontOfSize:13.0f] lineHeight:22.0f];
     NSMutableAttributedString *attrs = [[NSMutableAttributedString alloc] initWithString:planDesc attributes:@{NSParagraphStyleAttributeName:paragraphStyle, NSBaselineOffsetAttributeName:@(baselineOffset),NSFontAttributeName:[UIFont systemFontOfSize:13.0f], NSForegroundColorAttributeName:HexRGB(0x777777)}];
     self.textView.attributedText = attrs;
+    CGFloat height = [CourseGroupPlanDescView getViewRealHeight:planDesc];
+    if (height > 152) {
+        self.customScollBar.hidden = NO;
+    }
 }
 
 - (void)modifyPlanAction:(ModifyGroupPlanCallback)callback {
@@ -61,11 +83,15 @@
     return paragraphStyle;
 }
 
-
-+ (CGFloat)getViewHeight:(NSString *)planString {
++ (CGFloat)getViewRealHeight:(NSString *)planString {
     NSMutableParagraphStyle *paragraphStyle = [self getParagraphStyleWithFont:[UIFont systemFontOfSize:13.0f] lineHeight:22.0f];
     CGFloat baselineOffset = [self getBaseOffline:[UIFont systemFontOfSize:13.0f] lineHeight:22.0f];
     CGFloat height = [planString boundingRectWithSize:CGSizeMake(KPortraitWidth - 26, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSParagraphStyleAttributeName:paragraphStyle, NSBaselineOffsetAttributeName:@(baselineOffset),NSFontAttributeName:[UIFont systemFontOfSize:13.0f]} context:nil].size.height + 1 + 42 + 10 + 12;
+    return height;
+}
+
++ (CGFloat)getViewHeight:(NSString *)planString {
+    CGFloat height = [self getViewRealHeight:planString];
     if (height < 96) {
         height = 96.0f;
     }
@@ -90,6 +116,42 @@
     [[NSNotificationCenter defaultCenter] postNotificationName:@"UITextViewEndScroll" object:nil];
 }
 
+- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
+    if (self.customScollBar.hidden == NO) {
+        [UIView animateWithDuration:0.1 animations:^{
+            [self updateCustomScrollBar];
+        }];
+    }
+}
+
+// 更新滚动条位置的逻辑
+- (void)updateCustomScrollBar {
+    CGFloat contentHeight = self.textView.contentSize.height;
+    CGFloat visibleHeight = self.textView.bounds.size.height;
+    
+    // 计算滚动条位置
+    CGFloat scrollBarY = (self.textView.contentOffset.y / contentHeight) * visibleHeight;
+    if (scrollBarY < 0) {
+        scrollBarY = 0;
+    }
+    if (scrollBarY > visibleHeight - self.scrollBarHeight) {
+        scrollBarY = visibleHeight - self.scrollBarHeight;
+    }
+    // 更新滚动条的 Frame
+    [self.customScollBar mas_updateConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(self.textBgView.mas_top).offset(scrollBarY);
+    }];
+}
+
+- (UIView *)customScollBar {
+    if (!_customScollBar) {
+        _customScollBar = [[UIView alloc] init];
+        _customScollBar.backgroundColor = HexRGB(0xE2E2E2);
+        _customScollBar.layer.cornerRadius = 1.5; // 圆角效果
+    }
+    return _customScollBar;
+}
+
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 11 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseGroupView/CourseGroupPlanDescView.xib

@@ -53,9 +53,13 @@
                                 <action selector="buttonAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="7O5-OQ-PEc"/>
                             </connections>
                         </button>
-                        <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" editable="NO" textAlignment="natural" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="djD-FS-SLG">
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wFs-db-t9E">
                             <rect key="frame" x="12" y="42" width="373" height="81"/>
-                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        </view>
+                        <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" editable="NO" textAlignment="natural" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="djD-FS-SLG">
+                            <rect key="frame" x="12" y="42" width="373" height="81"/>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                             <color key="textColor" red="0.46666666666666667" green="0.46666666666666667" blue="0.46666666666666667" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <fontDescription key="fontDescription" type="system" pointSize="13"/>
                             <textInputTraits key="textInputTraits" autocapitalizationType="sentences" smartInsertDeleteType="no"/>
@@ -63,8 +67,10 @@
                     </subviews>
                     <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                     <constraints>
+                        <constraint firstItem="wFs-db-t9E" firstAttribute="bottom" secondItem="djD-FS-SLG" secondAttribute="bottom" id="63u-0d-Vsk"/>
                         <constraint firstItem="17Y-QM-ifr" firstAttribute="leading" secondItem="I6t-ba-QZt" secondAttribute="trailing" constant="2" id="6tq-hO-O19"/>
                         <constraint firstAttribute="trailing" secondItem="gyP-HZ-5E0" secondAttribute="trailing" id="8h7-nk-xKs"/>
+                        <constraint firstItem="wFs-db-t9E" firstAttribute="leading" secondItem="djD-FS-SLG" secondAttribute="leading" id="AxG-ds-oCw"/>
                         <constraint firstAttribute="trailing" secondItem="17Y-QM-ifr" secondAttribute="trailing" constant="12" id="HQk-s5-KMm"/>
                         <constraint firstItem="djD-FS-SLG" firstAttribute="top" secondItem="0CG-ac-gwS" secondAttribute="bottom" constant="12" id="O2v-6x-zf5"/>
                         <constraint firstItem="0CG-ac-gwS" firstAttribute="leading" secondItem="7vY-rm-il4" secondAttribute="leading" constant="12" id="Zco-rw-GXs"/>
@@ -75,7 +81,9 @@
                         <constraint firstItem="Ext-kp-pD1" firstAttribute="leading" secondItem="0CG-ac-gwS" secondAttribute="trailing" constant="6" id="jhx-Yc-Zkl"/>
                         <constraint firstItem="Ext-kp-pD1" firstAttribute="centerY" secondItem="0CG-ac-gwS" secondAttribute="centerY" id="msL-eA-jvm"/>
                         <constraint firstItem="17Y-QM-ifr" firstAttribute="centerY" secondItem="Ext-kp-pD1" secondAttribute="centerY" id="mvg-ov-0fM"/>
+                        <constraint firstItem="wFs-db-t9E" firstAttribute="trailing" secondItem="djD-FS-SLG" secondAttribute="trailing" id="n0b-sc-3R0"/>
                         <constraint firstItem="I6t-ba-QZt" firstAttribute="centerY" secondItem="Ext-kp-pD1" secondAttribute="centerY" id="nM8-HE-qkG"/>
+                        <constraint firstItem="wFs-db-t9E" firstAttribute="top" secondItem="djD-FS-SLG" secondAttribute="top" id="sen-vR-s54"/>
                         <constraint firstAttribute="bottom" secondItem="djD-FS-SLG" secondAttribute="bottom" constant="10" id="yPj-fN-IJf"/>
                     </constraints>
                     <userDefinedRuntimeAttributes>
@@ -96,6 +104,7 @@
             <nil key="simulatedBottomBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <connections>
+                <outlet property="textBgView" destination="wFs-db-t9E" id="QgB-as-UfB"/>
                 <outlet property="textView" destination="djD-FS-SLG" id="3te-uV-dmn"/>
             </connections>
             <point key="canvasLocation" x="75.572519083969468" y="45.422535211267608"/>

+ 16 - 16
KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/View/PopView/MusicRoomCourseCell.xib

@@ -12,14 +12,14 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="127" id="KGk-i7-Jjw" customClass="MusicRoomCourseCell">
-            <rect key="frame" x="0.0" y="0.0" width="435" height="127"/>
+            <rect key="frame" x="0.0" y="0.0" width="435" height="137"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
-                <rect key="frame" x="0.0" y="0.0" width="435" height="127"/>
+                <rect key="frame" x="0.0" y="0.0" width="435" height="137"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Wl9-sn-VK0">
-                        <rect key="frame" x="14" y="0.0" width="407" height="117"/>
+                        <rect key="frame" x="14" y="0.0" width="407" height="127"/>
                         <subviews>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_time" translatesAutoresizingMaskIntoConstraints="NO" id="VjP-WA-4SG">
                                 <rect key="frame" x="12" y="12" width="16" height="16"/>
@@ -45,16 +45,16 @@
                                 </constraints>
                             </view>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管第一期" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="l2B-EY-GWY">
-                                <rect key="frame" x="68" y="53" width="95.5" height="28"/>
+                                <rect key="frame" x="75" y="59" width="95.5" height="22"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="28" id="kAd-0f-k5x"/>
+                                    <constraint firstAttribute="height" constant="22" id="kAd-0f-k5x"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                                 <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Dys-CR-rsC">
-                                <rect key="frame" x="68" y="81" width="43" height="20"/>
+                                <rect key="frame" x="75" y="89" width="43" height="20"/>
                                 <subviews>
                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TPd-JA-v98">
                                         <rect key="frame" x="5" y="0.0" width="33" height="20"/>
@@ -78,20 +78,20 @@
                                 </userDefinedRuntimeAttributes>
                             </view>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_musicRoom" translatesAutoresizingMaskIntoConstraints="NO" id="SU2-Qb-iP7">
-                                <rect key="frame" x="11" y="55" width="47" height="47"/>
+                                <rect key="frame" x="11" y="57" width="54" height="54"/>
                                 <constraints>
-                                    <constraint firstAttribute="width" constant="47" id="7XX-Pp-wuW"/>
-                                    <constraint firstAttribute="height" constant="47" id="m1c-NL-CHV"/>
+                                    <constraint firstAttribute="width" constant="54" id="7XX-Pp-wuW"/>
+                                    <constraint firstAttribute="height" constant="54" id="m1c-NL-CHV"/>
                                 </constraints>
                             </imageView>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="6人" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IdU-Te-VFw">
-                                <rect key="frame" x="128" y="82.5" width="24.5" height="17"/>
+                                <rect key="frame" x="135" y="90.5" width="24.5" height="17"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                 <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XK0-9s-28t">
-                                <rect key="frame" x="119" y="85" width="1" height="12"/>
+                                <rect key="frame" x="126" y="93" width="1" height="12"/>
                                 <color key="backgroundColor" red="0.87058823529999996" green="0.87058823529999996" blue="0.87058823529999996" alpha="1" colorSpace="calibratedRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="1" id="3H3-aX-PD8"/>
@@ -99,7 +99,7 @@
                                 </constraints>
                             </view>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="t3h-kH-4md">
-                                <rect key="frame" x="169.5" y="47" width="19" height="40"/>
+                                <rect key="frame" x="176.5" y="50" width="19" height="40"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="40" id="yHT-o3-kyh"/>
                                 </constraints>
@@ -119,7 +119,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ynq-yf-PqU">
-                                <rect key="frame" x="327" y="69" width="70" height="28"/>
+                                <rect key="frame" x="327" y="79" width="70" height="28"/>
                                 <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="70" id="Bjh-bg-ieX"/>
@@ -139,15 +139,15 @@
                         <constraints>
                             <constraint firstAttribute="trailing" secondItem="Ynq-yf-PqU" secondAttribute="trailing" constant="10" id="016-EB-kbW"/>
                             <constraint firstItem="VjP-WA-4SG" firstAttribute="leading" secondItem="Wl9-sn-VK0" secondAttribute="leading" constant="12" id="76s-eU-Ril"/>
-                            <constraint firstItem="Dys-CR-rsC" firstAttribute="top" secondItem="l2B-EY-GWY" secondAttribute="bottom" id="9Pu-wW-GUr"/>
+                            <constraint firstItem="Dys-CR-rsC" firstAttribute="top" secondItem="l2B-EY-GWY" secondAttribute="bottom" constant="8" id="9Pu-wW-GUr"/>
                             <constraint firstItem="VjP-WA-4SG" firstAttribute="top" secondItem="Wl9-sn-VK0" secondAttribute="top" constant="12" id="B95-QO-f7C"/>
-                            <constraint firstItem="l2B-EY-GWY" firstAttribute="top" secondItem="SU2-Qb-iP7" secondAttribute="top" constant="-2" id="CLv-wr-aLa"/>
+                            <constraint firstItem="l2B-EY-GWY" firstAttribute="top" secondItem="SU2-Qb-iP7" secondAttribute="top" constant="2" id="CLv-wr-aLa"/>
                             <constraint firstItem="UxS-Xs-zTk" firstAttribute="leading" secondItem="VjP-WA-4SG" secondAttribute="trailing" constant="6" id="Ct9-78-SuQ"/>
                             <constraint firstAttribute="trailing" secondItem="vhC-DA-OVA" secondAttribute="trailing" constant="11" id="DCC-bH-qfZ"/>
                             <constraint firstItem="SU2-Qb-iP7" firstAttribute="leading" secondItem="Wl9-sn-VK0" secondAttribute="leading" constant="11" id="GV9-3y-mVI"/>
                             <constraint firstAttribute="trailing" secondItem="89l-Qb-VVR" secondAttribute="trailing" constant="10" id="J29-HZ-el6"/>
                             <constraint firstAttribute="bottom" secondItem="Ynq-yf-PqU" secondAttribute="bottom" constant="20" id="QUK-Km-aDl"/>
-                            <constraint firstItem="SU2-Qb-iP7" firstAttribute="top" secondItem="89l-Qb-VVR" secondAttribute="bottom" constant="14" id="Qs3-pL-XSR"/>
+                            <constraint firstItem="SU2-Qb-iP7" firstAttribute="top" secondItem="89l-Qb-VVR" secondAttribute="bottom" constant="16" id="Qs3-pL-XSR"/>
                             <constraint firstItem="vhC-DA-OVA" firstAttribute="centerY" secondItem="UxS-Xs-zTk" secondAttribute="centerY" id="TF7-Px-etW"/>
                             <constraint firstItem="t3h-kH-4md" firstAttribute="centerY" secondItem="l2B-EY-GWY" secondAttribute="centerY" id="UVU-pa-1FY"/>
                             <constraint firstItem="IdU-Te-VFw" firstAttribute="centerY" secondItem="XK0-9s-28t" secondAttribute="centerY" id="WTg-71-ksP"/>