ソースを参照

首页去掉精品扩展区,合并到热门曲目中

Steven 3 年 前
コミット
8dc0049b7b

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

@@ -4826,16 +4826,16 @@
 		BC0A2277284751DF0065C1AB /* MetronomeView */ = {
 			isa = PBXGroup;
 			children = (
-				BC0A2278284751DF0065C1AB /* MetronomeAlertView.m */,
+				BC0A2280284751DF0065C1AB /* KSSliderView.h */,
+				BC0A227C284751DF0065C1AB /* KSSliderView.m */,
 				BC0A2279284751DF0065C1AB /* KSTrackingSlider.h */,
+				BC0A227F284751DF0065C1AB /* KSTrackingSlider.m */,
 				BC0A227A284751DF0065C1AB /* KSValuePopView.h */,
-				BC0A227B284751DF0065C1AB /* MetronomeControlView.m */,
-				BC0A227C284751DF0065C1AB /* KSSliderView.m */,
-				BC0A227D284751DF0065C1AB /* MetronomeAlertView.h */,
 				BC0A227E284751DF0065C1AB /* KSValuePopView.m */,
-				BC0A227F284751DF0065C1AB /* KSTrackingSlider.m */,
-				BC0A2280284751DF0065C1AB /* KSSliderView.h */,
+				BC0A227D284751DF0065C1AB /* MetronomeAlertView.h */,
+				BC0A2278284751DF0065C1AB /* MetronomeAlertView.m */,
 				BC0A2281284751DF0065C1AB /* MetronomeControlView.h */,
+				BC0A227B284751DF0065C1AB /* MetronomeControlView.m */,
 			);
 			path = MetronomeView;
 			sourceTree = "<group>";

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


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

@@ -180,21 +180,5 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "10FBB1E8-BEA4-4CD3-A012-327C025BBB37"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Home/Music/View/MyMusicBodyView.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "118"
-            endingLineNumber = "118"
-            landmarkName = "-requestData"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 7 - 121
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Controller/HomeViewController.m

@@ -42,9 +42,6 @@
 #import "HomeHotAlbumCell.h"
 #import "HomeHotMusicModel.h"
 
-#import "HomeQualityMusic.h"
-#import "HomeQualityMusicCollectionCell.h"
-
 #import "KSPremissionAlert.h"
 #import "RecordCheckManager.h"
 #import "KSAccompanyWebViewController.h"
@@ -99,12 +96,6 @@
 @property (nonatomic, strong) UICollectionView *albumCollectionView; // 专辑容器
 @property (nonatomic, assign) CGFloat albumViewHeight; // album 高度
 
-// 精品曲谱
-@property (nonatomic, strong) HomeQualityMusic *qualityMusicView;
-@property (nonatomic, strong) UICollectionView *qualityMusicCollectionView; // 精品曲谱容器
-@property (nonatomic, strong) NSMutableArray *qualityMusicArray; // 精品曲谱数据
-@property (nonatomic, assign) CGFloat qualityMusicViewHeight; // 精品music高度
-
 @property (nonatomic, strong) dispatch_group_t requestGroup;
 
 @property (nonatomic, strong) RecentCourseModel *recentCourseModel;
@@ -223,7 +214,6 @@
     [self refreshNotice];
     [self refreshCourseView:self.recentCourseModel];
     [self refreshAlbumView];
-    [self refreshQualityView];
     [self refreshMusicView];
     // 刷新排序
     [self refreshViewLocation];
@@ -430,30 +420,11 @@
     [self.albumCollectionView reloadData];
 }
 
-- (void)requestQualityMusic {
-    [KSNetworkingManager homeQualityMusicListRequest:KS_POST version:[USER_MANAGER getCurrentVersion] success:^(NSDictionary * _Nonnull dic) {
-        dispatch_group_leave(self.requestGroup);
-        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-            NSArray *sourceArray = [[dic dictionaryValueForKey:@"data"] arrayValueForKey:@"rows"];
-            NSMutableArray *musicArray = [NSMutableArray array];
-            for (NSDictionary *parm in sourceArray) {
-                HomeHotMusicModel *model = [[HomeHotMusicModel alloc] initWithDictionary:parm];
-                [musicArray addObject:model];
-            }
-            self.qualityMusicArray = [NSMutableArray arrayWithArray:musicArray];
-        }
-        else {
-            [self MBPShow:MESSAGEKEY];
-        }
-    } faliure:^(NSError * _Nonnull error) {
-        dispatch_group_leave(self.requestGroup);
-    }];
-}
 
 - (void)requestHotMusicList {
     dispatch_group_enter(self.requestGroup);
     [KSNetworkingManager homeMusicListRequest:KS_POST version:[USER_MANAGER getCurrentVersion] success:^(NSDictionary * _Nonnull dic) {
-       
+        dispatch_group_leave(self.requestGroup);
         if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
             NSArray *sourceArray = [[dic dictionaryValueForKey:@"data"] arrayValueForKey:@"rows"];
             NSMutableArray *musicArray = [NSMutableArray array];
@@ -466,26 +437,12 @@
         else {
             [self MBPShow:MESSAGEKEY];
         }
-        [self requestQualityMusic];
+        
     } faliure:^(NSError * _Nonnull error) {
-        [self requestQualityMusic];
+        dispatch_group_leave(self.requestGroup);
     }];
 }
 
-- (void)refreshQualityView {
-    if (self.qualityMusicArray.count) {
-        self.qualityMusicViewHeight = [HomeQualityMusic getViewHeight];
-        self.qualityMusicView.hidden = NO;
-    }
-    else {
-        self.qualityMusicViewHeight = CGFLOAT_MIN;
-        self.qualityMusicView.hidden = YES;
-    }
-    [self.qualityMusicView mas_updateConstraints:^(MASConstraintMaker *make) {
-        make.height.mas_equalTo(self.qualityMusicViewHeight);
-    }];
-    [self.qualityMusicCollectionView reloadData];
-}
 
 - (void)refreshMusicView {
     if (self.dataArray.count) {
@@ -579,19 +536,11 @@
         make.height.mas_equalTo(self.albumViewHeight);
     }];
     
-    [self.scrollView addSubview:self.qualityMusicView];
-    self.qualityMusicViewHeight = [HomeQualityMusic getViewHeight];
-    [self.qualityMusicView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.left.right.mas_equalTo(self.view);
-        make.top.mas_equalTo(self.albumView.mas_bottom);
-        make.height.mas_equalTo(self.qualityMusicViewHeight);
-    }];
-    
     [self.scrollView addSubview:self.hotMusicView];
     CGFloat musicHeadHeight = [HomeHotMusicView getViewHeight];
     [self.hotMusicView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.right.mas_equalTo(self.view);
-        make.top.mas_equalTo(self.qualityMusicView.mas_bottom);
+        make.top.mas_equalTo(self.albumView.mas_bottom);
         make.height.mas_equalTo(musicHeadHeight);
         make.bottom.mas_equalTo(self.scrollView.mas_bottom).offset(-10);
     }];
@@ -1068,11 +1017,6 @@
     if (collectionView == self.albumCollectionView) {
         return self.albumArray.count;
     }
-    else if (collectionView == self.qualityMusicCollectionView) { // 精品曲目
-        NSInteger lastRowCount = (self.qualityMusicArray.count % 4) > 0 ? 1 : 0;
-        NSInteger count = self.qualityMusicArray.count / 4 + lastRowCount;
-        return count;
-    }
     else {
         NSInteger lastRowCount = (self.dataArray.count % 4) > 0 ? 1 : 0;
         NSInteger count = self.dataArray.count / 4 + lastRowCount;
@@ -1087,19 +1031,6 @@
         [cell configWithAlbumModel:model];
         return cell;
     }
-    else if (collectionView == self.qualityMusicCollectionView) {
-        NSMutableArray *songArray = [NSMutableArray array];
-        NSInteger length = indexPath.item * 4 + 4 > self.qualityMusicArray.count ? self.qualityMusicArray.count - indexPath.item * 4: 4;
-        NSRange range = NSMakeRange(indexPath.item * 4, length);
-        
-        songArray = [NSMutableArray arrayWithArray:[self.qualityMusicArray subarrayWithRange:range]];
-        HomeQualityMusicCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"HomeQualityMusicCollectionCell" forIndexPath:indexPath];
-        MJWeakSelf;
-        [cell configWithSourceArray:songArray callback:^(NSString * _Nonnull songId) {
-            [weakSelf displaySongDetail:songId];
-        }];
-        return cell;
-    }
     else {
         NSMutableArray *songArray = [NSMutableArray array];
         NSInteger length = indexPath.item * 4 + 4 > self.dataArray.count ? self.dataArray.count - indexPath.item * 4: 4;
@@ -1131,9 +1062,6 @@
         return CGSizeMake(100, 140);
 
     }
-    else if (collectionView == self.qualityMusicCollectionView) {
-        return CGSizeMake(KPortraitWidth * 0.83, 320);
-    }
     else {
         return CGSizeMake(KPortraitWidth * 0.83, 320);
     }
@@ -1194,47 +1122,6 @@
     [self.navigationController pushViewController:ctrl animated:YES];
 }
 
-#pragma mark ----- 精品曲目
-- (HomeQualityMusic *)qualityMusicView {
-    if (!_qualityMusicView) {
-        _qualityMusicView = [HomeQualityMusic shareInstance];
-        MJWeakSelf;
-        [_qualityMusicView homeMusicMore:^{
-            [weakSelf moreHotMusic:YES];
-        }];
-        [_qualityMusicView.musicContentView addSubview:self.qualityMusicCollectionView];
-        [self.qualityMusicCollectionView mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.left.right.bottom.top.mas_equalTo(_qualityMusicView.musicContentView);
-        }];
-    }
-    return _qualityMusicView;
-}
-
-- (UICollectionView *)qualityMusicCollectionView {
-    if (!_qualityMusicCollectionView) {
-        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
-        layout.sectionInset = UIEdgeInsetsMake(12, 14, 12, 14);
-        layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
-        _qualityMusicCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
-        _qualityMusicCollectionView.backgroundColor = [UIColor clearColor];
-        _qualityMusicCollectionView.delegate = self;
-        _qualityMusicCollectionView.dataSource = self;
-        _qualityMusicCollectionView.showsVerticalScrollIndicator = NO;
-        _qualityMusicCollectionView.showsHorizontalScrollIndicator = NO;
-        if (@available(iOS 11.0, *)) {
-            _qualityMusicCollectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
-        } else {
-            // Fallback on earlier versions
-            if (@available(iOS 13.0, *)) {
-                _qualityMusicCollectionView.automaticallyAdjustsScrollIndicatorInsets = NO;
-            } else {
-                // Fallback on earlier versions
-            }
-        }
-        [_qualityMusicCollectionView registerNib:[UINib nibWithNibName:@"HomeQualityMusicCollectionCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"HomeQualityMusicCollectionCell"];
-    }
-    return _qualityMusicCollectionView;
-}
 
 #pragma mark ---- 更多曲目
 - (HomeHotMusicView *)hotMusicView {
@@ -1242,7 +1129,7 @@
         _hotMusicView = [HomeHotMusicView shareInstance];
         MJWeakSelf;
         [_hotMusicView homeMusicMore:^{
-            [weakSelf moreHotMusic:NO];
+            [weakSelf moreHotMusic];
         }];
         [_hotMusicView.musicContentView addSubview:self.musicCollectionView];
         [self.musicCollectionView mas_makeConstraints:^(MASConstraintMaker *make) {
@@ -1253,10 +1140,9 @@
 }
 
 
-- (void)moreHotMusic:(BOOL)isQuality {
-    NSString *type = isQuality ? @"?type=fine" : @"?type=list";
+- (void)moreHotMusic {
     KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
-    ctrl.url = [NSString stringWithFormat:@"%@%@%@", WEBHOST, @"/#/music-list",type];
+    ctrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/music-list"];
     [self.navigationController pushViewController:ctrl animated:YES];
 }
 

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeHotMusicModel.h

@@ -54,6 +54,7 @@
 @property (nonatomic, strong) NSString *musicSubject;
 @property (nonatomic, assign) double userId;
 @property (nonatomic, strong) NSString *submitAuditTime;
+@property (nonatomic, assign) BOOL exquisiteFlag;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 7 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Model/HomeHotMusicModel.m

@@ -51,6 +51,7 @@ NSString *const kHomeHotMusicModelAuditVersion = @"auditVersion";
 NSString *const kHomeHotMusicModelMusicSubject = @"musicSubject";
 NSString *const kHomeHotMusicModelUserId = @"userId";
 NSString *const kHomeHotMusicModelSubmitAuditTime = @"submitAuditTime";
+NSString *const kHomeHotMusicModelExquisiteFlag = @"exquisiteFlag";
 
 
 @interface HomeHotMusicModel ()
@@ -104,6 +105,7 @@ NSString *const kHomeHotMusicModelSubmitAuditTime = @"submitAuditTime";
 @synthesize musicSubject = _musicSubject;
 @synthesize userId = _userId;
 @synthesize submitAuditTime = _submitAuditTime;
+@synthesize exquisiteFlag = _exquisiteFlag;
 
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
@@ -161,7 +163,7 @@ NSString *const kHomeHotMusicModelSubmitAuditTime = @"submitAuditTime";
             self.musicSubject = [self objectOrNilForKey:kHomeHotMusicModelMusicSubject fromDictionary:dict];
             self.userId = [[self objectOrNilForKey:kHomeHotMusicModelUserId fromDictionary:dict] doubleValue];
             self.submitAuditTime = [self objectOrNilForKey:kHomeHotMusicModelSubmitAuditTime fromDictionary:dict];
-
+        self.exquisiteFlag = [[self objectOrNilForKey:kHomeHotMusicModelExquisiteFlag fromDictionary:dict] boolValue];
     }
     
     return self;
@@ -214,7 +216,7 @@ NSString *const kHomeHotMusicModelSubmitAuditTime = @"submitAuditTime";
     [mutableDict setValue:self.musicSubject forKey:kHomeHotMusicModelMusicSubject];
     [mutableDict setValue:[NSNumber numberWithDouble:self.userId] forKey:kHomeHotMusicModelUserId];
     [mutableDict setValue:self.submitAuditTime forKey:kHomeHotMusicModelSubmitAuditTime];
-
+    [mutableDict setValue:[NSNumber numberWithBool:self.exquisiteFlag] forKey:kHomeHotMusicModelExquisiteFlag];
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -284,6 +286,7 @@ NSString *const kHomeHotMusicModelSubmitAuditTime = @"submitAuditTime";
     self.musicSubject = [aDecoder decodeObjectForKey:kHomeHotMusicModelMusicSubject];
     self.userId = [aDecoder decodeDoubleForKey:kHomeHotMusicModelUserId];
     self.submitAuditTime = [aDecoder decodeObjectForKey:kHomeHotMusicModelSubmitAuditTime];
+    self.exquisiteFlag = [aDecoder decodeBoolForKey:kHomeHotMusicModelExquisiteFlag];
     return self;
 }
 
@@ -333,6 +336,7 @@ NSString *const kHomeHotMusicModelSubmitAuditTime = @"submitAuditTime";
     [aCoder encodeObject:_musicSubject forKey:kHomeHotMusicModelMusicSubject];
     [aCoder encodeDouble:_userId forKey:kHomeHotMusicModelUserId];
     [aCoder encodeObject:_submitAuditTime forKey:kHomeHotMusicModelSubmitAuditTime];
+    [aCoder encodeBool:_exquisiteFlag forKey:kHomeHotMusicModelExquisiteFlag];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -384,6 +388,7 @@ NSString *const kHomeHotMusicModelSubmitAuditTime = @"submitAuditTime";
         copy.musicSubject = [self.musicSubject copyWithZone:zone];
         copy.userId = self.userId;
         copy.submitAuditTime = [self.submitAuditTime copyWithZone:zone];
+        copy.exquisiteFlag = self.exquisiteFlag;
     }
     
     return copy;

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/Model/MusicMessageModel.h

@@ -52,6 +52,7 @@
 @property (nonatomic, strong) NSString *titleImg;
 
 @property (nonatomic, assign) BOOL isChoose;
+@property (nonatomic, assign) BOOL exquisiteFlag;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 8 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/Model/MusicMessageModel.m

@@ -48,6 +48,8 @@ NSString *const kMusicMessageModelUserId = @"userId";
 NSString *const kMusicMessageModelSubmitAuditTime = @"submitAuditTime";
 NSString *const kMusicMessageModelTitleImg = @"titleImg";
 
+NSString *const kMusicMessageModelExquisiteFlag = @"exquisiteFlag";
+
 @interface MusicMessageModel ()
 
 - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
@@ -95,6 +97,7 @@ NSString *const kMusicMessageModelTitleImg = @"titleImg";
 @synthesize userId = _userId;
 @synthesize submitAuditTime = _submitAuditTime;
 @synthesize titleImg = _titleImg;
+@synthesize exquisiteFlag = _exquisiteFlag;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -147,6 +150,7 @@ NSString *const kMusicMessageModelTitleImg = @"titleImg";
             self.userId = [[self objectOrNilForKey:kMusicMessageModelUserId fromDictionary:dict] doubleValue];
             self.submitAuditTime = [self objectOrNilForKey:kMusicMessageModelSubmitAuditTime fromDictionary:dict];
             self.titleImg = [self objectOrNilForKey:kMusicMessageModelTitleImg fromDictionary:dict];
+        self.exquisiteFlag = [[self objectOrNilForKey:kMusicMessageModelExquisiteFlag fromDictionary:dict] integerValue];
     }
     
     return self;
@@ -195,6 +199,7 @@ NSString *const kMusicMessageModelTitleImg = @"titleImg";
     [mutableDict setValue:[NSNumber numberWithDouble:self.userId] forKey:kMusicMessageModelUserId];
     [mutableDict setValue:self.submitAuditTime forKey:kMusicMessageModelSubmitAuditTime];
     [mutableDict setValue:self.titleImg forKey:kMusicMessageModelTitleImg];
+    [mutableDict setValue:[NSNumber numberWithBool:self.exquisiteFlag] forKey:kMusicMessageModelExquisiteFlag];
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -260,6 +265,7 @@ NSString *const kMusicMessageModelTitleImg = @"titleImg";
     self.userId = [aDecoder decodeDoubleForKey:kMusicMessageModelUserId];
     self.submitAuditTime = [aDecoder decodeObjectForKey:kMusicMessageModelSubmitAuditTime];
     self.titleImg = [aDecoder decodeObjectForKey:kMusicMessageModelTitleImg];
+    self.exquisiteFlag = [aDecoder decodeBoolForKey:kMusicMessageModelExquisiteFlag];
     return self;
 }
 
@@ -305,6 +311,7 @@ NSString *const kMusicMessageModelTitleImg = @"titleImg";
     [aCoder encodeDouble:_userId forKey:kMusicMessageModelUserId];
     [aCoder encodeObject:_submitAuditTime forKey:kMusicMessageModelSubmitAuditTime];
     [aCoder encodeObject:_titleImg forKey:kMusicMessageModelTitleImg];
+    [aCoder encodeBool:_exquisiteFlag forKey:kMusicMessageModelExquisiteFlag];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -352,6 +359,7 @@ NSString *const kMusicMessageModelTitleImg = @"titleImg";
         copy.userId = self.userId;
         copy.submitAuditTime = [self.submitAuditTime copyWithZone:zone];
         copy.titleImg = [self.titleImg copyWithZone:zone];
+        copy.exquisiteFlag = self.exquisiteFlag;
     }
     
     return copy;

+ 15 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/View/MusicMessageCell.m

@@ -32,6 +32,11 @@
 @property (weak, nonatomic) IBOutlet UIView *lineView;
 @property (nonatomic, strong) MusicMessageModel *sourceModel;
 
+@property (weak, nonatomic) IBOutlet UIImageView *qualityMusicTag;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityTagWidth;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityLeft;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityRight;
+
 @property (nonatomic, copy) MusicOffCallback callback;
 @end
 
@@ -48,6 +53,16 @@
     if (callback) {
         self.callback = callback;
     }
+    if (songMessage.exquisiteFlag) {
+        self.qualityMusicTag.hidden = NO;
+        self.qualityTagWidth.constant = 14.0f;
+        self.qualityLeft.constant = 5.0f;
+    }
+    else {
+        self.qualityMusicTag.hidden = NO;
+        self.qualityTagWidth.constant = 0.0f;
+        self.qualityLeft.constant = 0.0f;
+    }
     NSString *authString = @"";
     switch (type) {
         case MUSICCELLTYPE_OWNER:

+ 17 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/View/MusicMessageCell.xib

@@ -29,7 +29,7 @@
                                 </constraints>
                             </imageView>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="野蜂飞舞" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dl5-Bm-goQ">
-                                <rect key="frame" x="105" y="16" width="57.5" height="17"/>
+                                <rect key="frame" x="124" y="16" width="57.5" height="17"/>
                                 <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
                                 <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
@@ -144,10 +144,18 @@
                                     <constraint firstAttribute="width" constant="24" id="Q3M-59-DBt"/>
                                 </constraints>
                             </imageView>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="quality_tag" translatesAutoresizingMaskIntoConstraints="NO" id="efH-vf-n5D">
+                                <rect key="frame" x="105" y="16" width="14" height="17"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="14" id="uo4-Yf-NAJ"/>
+                                    <constraint firstAttribute="height" constant="17" id="ysN-Wh-zu7"/>
+                                </constraints>
+                            </imageView>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
                             <constraint firstAttribute="bottom" secondItem="Zm8-lb-ZEo" secondAttribute="bottom" id="7NW-eL-QbL"/>
+                            <constraint firstItem="dl5-Bm-goQ" firstAttribute="leading" secondItem="efH-vf-n5D" secondAttribute="trailing" constant="5" id="7c3-9k-8hE"/>
                             <constraint firstAttribute="trailing" secondItem="ZTx-7w-9HF" secondAttribute="trailing" constant="14" id="A59-EX-Pwf"/>
                             <constraint firstItem="0sg-Qr-0or" firstAttribute="top" secondItem="7XK-Ip-4nf" secondAttribute="top" id="DcX-XV-hYx"/>
                             <constraint firstAttribute="trailing" secondItem="bva-Fc-J3U" secondAttribute="trailing" constant="12" id="DqR-tq-mTT"/>
@@ -158,8 +166,10 @@
                             <constraint firstItem="dl5-Bm-goQ" firstAttribute="centerY" secondItem="0sg-Qr-0or" secondAttribute="centerY" id="MlC-5R-Fe3"/>
                             <constraint firstItem="RpH-mG-bAV" firstAttribute="leading" secondItem="7XK-Ip-4nf" secondAttribute="trailing" constant="11" id="Mp7-f0-ZO7"/>
                             <constraint firstItem="zQo-zL-Uo4" firstAttribute="trailing" secondItem="u0Q-lP-CEF" secondAttribute="trailing" id="N32-3C-GRm"/>
+                            <constraint firstItem="efH-vf-n5D" firstAttribute="centerY" secondItem="0sg-Qr-0or" secondAttribute="centerY" id="a0E-ob-qWA"/>
                             <constraint firstItem="7XK-Ip-4nf" firstAttribute="centerY" secondItem="sfm-yS-y7g" secondAttribute="centerY" id="gC0-wR-eHn"/>
                             <constraint firstItem="bva-Fc-J3U" firstAttribute="centerY" secondItem="RpH-mG-bAV" secondAttribute="centerY" id="hFT-pZ-tvT"/>
+                            <constraint firstItem="efH-vf-n5D" firstAttribute="leading" secondItem="0sg-Qr-0or" secondAttribute="trailing" constant="5" id="ivg-qq-OKW"/>
                             <constraint firstItem="Zm8-lb-ZEo" firstAttribute="leading" secondItem="sfm-yS-y7g" secondAttribute="leading" constant="14" id="lcg-jT-vjD"/>
                             <constraint firstItem="zQo-zL-Uo4" firstAttribute="bottom" secondItem="u0Q-lP-CEF" secondAttribute="bottom" id="mdH-Xd-Com"/>
                             <constraint firstAttribute="trailing" secondItem="Zm8-lb-ZEo" secondAttribute="trailing" constant="15" id="sCS-HL-jo0"/>
@@ -169,7 +179,6 @@
                             <constraint firstItem="7XK-Ip-4nf" firstAttribute="leading" secondItem="sfm-yS-y7g" secondAttribute="leading" constant="11" id="wWE-uW-GBd"/>
                             <constraint firstAttribute="trailing" secondItem="zQo-zL-Uo4" secondAttribute="trailing" constant="13" id="yrx-j1-I2z"/>
                             <constraint firstItem="bva-Fc-J3U" firstAttribute="leading" secondItem="RpH-mG-bAV" secondAttribute="trailing" constant="7" id="z8B-DS-OF4"/>
-                            <constraint firstItem="dl5-Bm-goQ" firstAttribute="leading" secondItem="0sg-Qr-0or" secondAttribute="trailing" constant="5" id="zmA-07-gQ9"/>
                         </constraints>
                     </view>
                 </subviews>
@@ -192,9 +201,13 @@
                 <outlet property="lineView" destination="Zm8-lb-ZEo" id="442-Ky-3TP"/>
                 <outlet property="musicCover" destination="7XK-Ip-4nf" id="eLL-Uh-TYx"/>
                 <outlet property="playImage" destination="ZTx-7w-9HF" id="b4d-YC-5QM"/>
+                <outlet property="qualityLeft" destination="7c3-9k-8hE" id="jiX-xk-lkj"/>
+                <outlet property="qualityMusicTag" destination="efH-vf-n5D" id="vtP-Nc-7QR"/>
+                <outlet property="qualityRight" destination="ivg-qq-OKW" id="yDe-sZ-GwM"/>
+                <outlet property="qualityTagWidth" destination="uo4-Yf-NAJ" id="bCv-Yj-dxq"/>
                 <outlet property="songAuth" destination="RpH-mG-bAV" id="KhE-Bc-yps"/>
                 <outlet property="songName" destination="dl5-Bm-goQ" id="bec-Nd-9g2"/>
-                <outlet property="tagView" destination="bva-Fc-J3U" id="g6a-2C-DKl"/>
+                <outlet property="tagView" destination="bva-Fc-J3U" id="E48-ph-0x7"/>
                 <outlet property="typeLabel" destination="HfV-3f-zsp" id="t0z-kF-06K"/>
                 <outlet property="typeView" destination="0sg-Qr-0or" id="bll-P9-6T7"/>
             </connections>
@@ -204,6 +217,7 @@
     <resources>
         <image name="home_music_play" width="24" height="24"/>
         <image name="music_logo" width="41" height="40"/>
+        <image name="quality_tag" width="14" height="17"/>
         <image name="unshelve_course" width="5" height="7"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>

+ 14 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeMusic/HomeHotMusicCellView.m

@@ -22,6 +22,10 @@
 
 @property (nonatomic, strong) HomeHotMusicModel *model;
 
+@property (weak, nonatomic) IBOutlet UIImageView *qualityMusicTag;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityTagWidth;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityLeft;
+
 @end
 
 @implementation HomeHotMusicCellView
@@ -35,6 +39,16 @@
         self.callback = callback;
     }
     self.model = sourceModel;
+    if (sourceModel.exquisiteFlag) {
+        self.qualityMusicTag.hidden = NO;
+        self.qualityTagWidth.constant = 14.0f;
+        self.qualityLeft.constant = 5.0f;
+    }
+    else {
+        self.qualityMusicTag.hidden = NO;
+        self.qualityTagWidth.constant = 0.0f;
+        self.qualityLeft.constant = 0.0f;
+    }
     if ([NSString isEmptyString:sourceModel.musicSheetName]) {
         self.songNameLabel.text = @"";
     }

+ 21 - 8
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeMusic/HomeHotMusicCellView.xib

@@ -11,7 +11,7 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="HomeHotMusicCellView">
-            <rect key="frame" x="0.0" y="0.0" width="414" height="80"/>
+            <rect key="frame" x="0.0" y="0.0" width="414" height="93"/>
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="N1D-TV-iWW">
@@ -50,13 +50,13 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="最伟大的作品" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7xw-r5-qc1">
-                    <rect key="frame" x="48" y="17.5" width="98" height="20"/>
+                    <rect key="frame" x="66" y="17.5" width="98" height="20"/>
                     <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"/>
                     <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="jm2-P7-5K9">
-                    <rect key="frame" x="151" y="20" width="43" height="15"/>
+                    <rect key="frame" x="169" y="20" width="43" height="15"/>
                     <fontDescription key="fontDescription" type="system" pointSize="12"/>
                     <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
                     <nil key="highlightedColor"/>
@@ -68,7 +68,7 @@
                     <nil key="highlightedColor"/>
                 </label>
                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_music_play" translatesAutoresizingMaskIntoConstraints="NO" id="6eO-qE-g8x">
-                    <rect key="frame" x="371" y="28" width="24" height="24"/>
+                    <rect key="frame" x="371" y="34.5" width="24" height="24"/>
                     <constraints>
                         <constraint firstAttribute="width" constant="24" id="Yoa-d2-AUb"/>
                         <constraint firstAttribute="height" constant="24" id="caE-x5-CQo"/>
@@ -82,26 +82,34 @@
                     </constraints>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="28W-1K-xs7">
-                    <rect key="frame" x="11" y="79.5" width="390" height="0.5"/>
+                    <rect key="frame" x="11" y="92.5" width="390" height="0.5"/>
                     <color key="backgroundColor" red="0.90980392160000001" green="0.90980392160000001" blue="0.90980392160000001" alpha="1" colorSpace="calibratedRGB"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="0.5" id="MXY-Ik-nnJ"/>
                     </constraints>
                 </view>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fGG-J1-J8q">
-                    <rect key="frame" x="0.0" y="0.0" width="414" height="80"/>
+                    <rect key="frame" x="0.0" y="0.0" width="414" height="93"/>
                     <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                     <connections>
                         <action selector="buttonAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="fvd-A1-IJ7"/>
                     </connections>
                 </button>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="quality_tag" translatesAutoresizingMaskIntoConstraints="NO" id="KtS-XT-IOh">
+                    <rect key="frame" x="47" y="19" width="14" height="17"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="14" id="qbi-AW-4Ra"/>
+                        <constraint firstAttribute="height" constant="17" id="xIf-1B-dUw"/>
+                    </constraints>
+                </imageView>
             </subviews>
             <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
-                <constraint firstItem="7xw-r5-qc1" firstAttribute="leading" secondItem="N1D-TV-iWW" secondAttribute="trailing" constant="6" id="8oE-D5-SWI"/>
+                <constraint firstItem="KtS-XT-IOh" firstAttribute="centerY" secondItem="N1D-TV-iWW" secondAttribute="centerY" id="8MH-KV-lh8"/>
                 <constraint firstItem="6eO-qE-g8x" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="jm2-P7-5K9" secondAttribute="trailing" constant="10" id="BiV-XL-Qww"/>
                 <constraint firstAttribute="bottom" secondItem="28W-1K-xs7" secondAttribute="bottom" id="EEi-j6-bXC"/>
                 <constraint firstItem="N1D-TV-iWW" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="19" id="Gyv-2L-yeF"/>
+                <constraint firstItem="KtS-XT-IOh" firstAttribute="leading" secondItem="N1D-TV-iWW" secondAttribute="trailing" constant="5" id="ISl-Jb-v2z"/>
                 <constraint firstItem="qrG-kH-VRz" firstAttribute="leading" secondItem="yx5-8B-fUi" secondAttribute="trailing" constant="12" id="Jbt-JJ-kdQ"/>
                 <constraint firstAttribute="trailing" secondItem="6eO-qE-g8x" secondAttribute="trailing" constant="19" id="OFX-bH-zcc"/>
                 <constraint firstItem="N1D-TV-iWW" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="11" id="Q0e-D9-JXV"/>
@@ -109,6 +117,7 @@
                 <constraint firstItem="28W-1K-xs7" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="11" id="XMy-D4-KQK"/>
                 <constraint firstItem="qrG-kH-VRz" firstAttribute="centerY" secondItem="yx5-8B-fUi" secondAttribute="centerY" id="cMa-5P-a2v"/>
                 <constraint firstItem="6eO-qE-g8x" firstAttribute="leading" secondItem="qrG-kH-VRz" secondAttribute="trailing" constant="5" id="cPj-aW-vdE"/>
+                <constraint firstItem="7xw-r5-qc1" firstAttribute="leading" secondItem="KtS-XT-IOh" secondAttribute="trailing" constant="5" id="dee-5a-7oM"/>
                 <constraint firstAttribute="trailing" secondItem="28W-1K-xs7" secondAttribute="trailing" constant="13" id="dez-R9-Ydg"/>
                 <constraint firstAttribute="trailing" secondItem="fGG-J1-J8q" secondAttribute="trailing" id="j3e-Gz-5as"/>
                 <constraint firstAttribute="bottom" secondItem="fGG-J1-J8q" secondAttribute="bottom" id="jNd-iF-vI9"/>
@@ -125,6 +134,9 @@
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <connections>
                 <outlet property="lineView" destination="28W-1K-xs7" id="4mk-r2-0Cz"/>
+                <outlet property="qualityLeft" destination="ISl-Jb-v2z" id="sib-ac-sIO"/>
+                <outlet property="qualityMusicTag" destination="KtS-XT-IOh" id="iJb-sj-SzP"/>
+                <outlet property="qualityTagWidth" destination="qbi-AW-4Ra" id="UMO-DU-Z6o"/>
                 <outlet property="songAuth" destination="jm2-P7-5K9" id="rS6-tU-qwV"/>
                 <outlet property="songNameLabel" destination="7xw-r5-qc1" id="fzV-Mi-66B"/>
                 <outlet property="statusLabel" destination="Py1-eU-jUO" id="NYg-Iw-DCP"/>
@@ -132,11 +144,12 @@
                 <outlet property="tagView" destination="qrG-kH-VRz" id="za1-QD-1A2"/>
                 <outlet property="uploadName" destination="yx5-8B-fUi" id="WSv-Gx-SCl"/>
             </connections>
-            <point key="canvasLocation" x="101.44927536231884" y="62.946428571428569"/>
+            <point key="canvasLocation" x="101.44927536231884" y="67.299107142857139"/>
         </view>
     </objects>
     <resources>
         <image name="home_music_play" width="24" height="24"/>
+        <image name="quality_tag" width="14" height="17"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
         </systemColor>

+ 15 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageMusicCell.m

@@ -22,6 +22,10 @@
 
 @property (weak, nonatomic) IBOutlet UIView *lineView;
 
+@property (weak, nonatomic) IBOutlet UIImageView *qualityMusicTag;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityTagWidth;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *qualityLeft;
+
 @end
 
 @implementation MinePageMusicCell
@@ -67,6 +71,17 @@
         self.lineView.hidden = NO;
     }
     
+    if (songMessage.exquisiteFlag) {
+        self.qualityMusicTag.hidden = NO;
+        self.qualityTagWidth.constant = 14.0f;
+        self.qualityLeft.constant = 5.0f;
+    }
+    else {
+        self.qualityMusicTag.hidden = NO;
+        self.qualityTagWidth.constant = 0.0f;
+        self.qualityLeft.constant = 0.0f;
+    }
+    
     self.songName.text = [NSString returnNoNullStringWithString:songMessage.musicSheetName];
     NSString *authSting = [NSString stringWithFormat:@"作曲:%@",[NSString returnNoNullStringWithString:songMessage.composer]];
     self.songAuth.text = authSting;

+ 15 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageMusicCell.xib

@@ -29,7 +29,7 @@
                                 </constraints>
                             </imageView>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="野蜂飞舞" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5wX-Qg-UK0">
-                                <rect key="frame" x="105" y="16" width="57.5" height="17"/>
+                                <rect key="frame" x="124" y="16" width="57.5" height="17"/>
                                 <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
                                 <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
@@ -93,12 +93,19 @@
                                     <constraint firstAttribute="height" constant="0.5" id="YI5-ye-ONm"/>
                                 </constraints>
                             </view>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="quality_tag" translatesAutoresizingMaskIntoConstraints="NO" id="V5J-Oe-JUu">
+                                <rect key="frame" x="105" y="16" width="14" height="17"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="17" id="xdw-Ba-Xol"/>
+                                    <constraint firstAttribute="width" constant="14" id="zIi-7h-39m"/>
+                                </constraints>
+                            </imageView>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
+                            <constraint firstItem="5wX-Qg-UK0" firstAttribute="leading" secondItem="V5J-Oe-JUu" secondAttribute="trailing" constant="5" id="1k1-4B-PrF"/>
                             <constraint firstAttribute="bottom" secondItem="0z5-RP-2Hy" secondAttribute="bottom" id="EdW-Qt-gFP"/>
                             <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="5wX-Qg-UK0" secondAttribute="trailing" constant="10" id="SV6-Ua-YmU"/>
-                            <constraint firstItem="5wX-Qg-UK0" firstAttribute="leading" secondItem="vUL-Jj-5Vt" secondAttribute="trailing" constant="5" id="Uw2-o9-W7K"/>
                             <constraint firstItem="KNo-AM-8Um" firstAttribute="bottom" secondItem="xBX-sV-7hK" secondAttribute="bottom" id="WM8-AX-Frc"/>
                             <constraint firstItem="qyC-cX-e8b" firstAttribute="centerY" secondItem="eZd-kc-RgJ" secondAttribute="centerY" id="XHu-lk-zgJ"/>
                             <constraint firstItem="0z5-RP-2Hy" firstAttribute="leading" secondItem="eZd-kc-RgJ" secondAttribute="leading" constant="14" id="a6A-id-sIZ"/>
@@ -111,6 +118,8 @@
                             <constraint firstItem="qO5-Vi-5dQ" firstAttribute="centerY" secondItem="KNo-AM-8Um" secondAttribute="centerY" id="mUc-zy-UY8"/>
                             <constraint firstAttribute="trailing" secondItem="0z5-RP-2Hy" secondAttribute="trailing" constant="15" id="ndn-cE-AmF"/>
                             <constraint firstItem="5wX-Qg-UK0" firstAttribute="centerY" secondItem="vUL-Jj-5Vt" secondAttribute="centerY" id="pXr-De-Tat"/>
+                            <constraint firstItem="V5J-Oe-JUu" firstAttribute="centerY" secondItem="vUL-Jj-5Vt" secondAttribute="centerY" id="ptT-II-Bnj"/>
+                            <constraint firstItem="V5J-Oe-JUu" firstAttribute="leading" secondItem="vUL-Jj-5Vt" secondAttribute="trailing" constant="5" id="rRi-zb-jyg"/>
                             <constraint firstItem="vUL-Jj-5Vt" firstAttribute="leading" secondItem="xBX-sV-7hK" secondAttribute="trailing" constant="11" id="vcR-WX-hCx"/>
                             <constraint firstAttribute="trailing" secondItem="qyC-cX-e8b" secondAttribute="trailing" constant="14" id="z9c-xm-3Bm"/>
                         </constraints>
@@ -129,6 +138,9 @@
                 <outlet property="bgView" destination="eZd-kc-RgJ" id="DDC-wq-TIl"/>
                 <outlet property="lineView" destination="0z5-RP-2Hy" id="8tz-Y9-pUv"/>
                 <outlet property="musicCover" destination="xBX-sV-7hK" id="Xce-kE-ajH"/>
+                <outlet property="qualityLeft" destination="rRi-zb-jyg" id="yt8-Qa-rwM"/>
+                <outlet property="qualityMusicTag" destination="V5J-Oe-JUu" id="Sdf-ds-B2Y"/>
+                <outlet property="qualityTagWidth" destination="zIi-7h-39m" id="Rlc-20-guN"/>
                 <outlet property="songAuth" destination="KNo-AM-8Um" id="sE3-sB-pLo"/>
                 <outlet property="songName" destination="5wX-Qg-UK0" id="ibp-Xx-gL2"/>
                 <outlet property="tagView" destination="qO5-Vi-5dQ" id="Jau-UE-yYr"/>
@@ -141,6 +153,7 @@
     <resources>
         <image name="home_music_play" width="24" height="24"/>
         <image name="music_logo" width="41" height="40"/>
+        <image name="quality_tag" width="14" height="17"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
         </systemColor>