Browse Source

SVIP显示

Steven 7 tháng trước cách đây
mục cha
commit
79bd974501
35 tập tin đã thay đổi với 487 bổ sung76 xóa
  1. 6 0
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. 1 1
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/xcshareddata/xcschemes/KulexiuForTeacher.xcscheme
  3. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagSvip.imageset/Contents.json
  4. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagSvip.imageset/mineCenter_tagSvip@2x.png
  5. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagSvip.imageset/mineCenter_tagSvip@3x.png
  6. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagSvipExpired.imageset/Contents.json
  7. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagSvipExpired.imageset/mineCenter_tagSvipExpired@2x.png
  8. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagSvipExpired.imageset/mineCenter_tagSvipExpired@3x.png
  9. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagVip.imageset/Contents.json
  10. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagVip.imageset/mineCenter_tagVip@2x.png
  11. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagVip.imageset/mineCenter_tagVip@3x.png
  12. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagVipExpired.imageset/Contents.json
  13. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagVipExpired.imageset/mineCenter_tagVipExpired@2x.png
  14. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagVipExpired.imageset/mineCenter_tagVipExpired@3x.png
  15. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mine_svip.imageset/Contents.json
  16. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mine_svip.imageset/mine_svip@2x.png
  17. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mine_svip.imageset/mine_svip@3x.png
  18. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mine_vip.imageset/mine_vip@2x.png
  19. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mine_vip.imageset/mine_vip@3x.png
  20. 12 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeNavView.m
  21. 5 6
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeNavView.xib
  22. 4 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserInfo.h
  23. 9 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserInfo.m
  24. 25 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserVip.h
  25. 134 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserVip.m
  26. 12 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/HeadView/MinePageTopView.m
  27. 8 9
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/HeadView/MinePageTopView.xib
  28. 3 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Model/TeacherInfo.h
  29. 8 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Model/TeacherInfo.m
  30. 72 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineDescView.m
  31. 25 14
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineDescView.xib
  32. 11 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineHeadView.m
  33. 19 20
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineHeadView.xib
  34. 12 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/TenantMineHeadView.m
  35. 11 12
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/TenantMineHeadView.xib

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

@@ -1083,6 +1083,7 @@
 		BCF61BF128042FA90000ACFE /* InstrumentChooseBottonView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCF61BF028042FA90000ACFE /* InstrumentChooseBottonView.xib */; };
 		BCFC09CC2C47FB5C009A727F /* CloudAccompanyLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCFC09CB2C47FB5C009A727F /* CloudAccompanyLibrary.framework */; };
 		BCFC09CE2C47FB6F009A727F /* KSToolLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCFC09CD2C47FB6F009A727F /* KSToolLibrary.framework */; };
+		BCFC09DD2C48E4A0009A727F /* UserVip.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFC09DC2C48E4A0009A727F /* UserVip.m */; };
 		BCFE540928168DFF00AD6786 /* KSButtonStatusView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFE540828168DFF00AD6786 /* KSButtonStatusView.m */; };
 		BCFE541028178FF600AD6786 /* MyIncomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFE540F28178FF600AD6786 /* MyIncomeViewController.m */; };
 		BCFE54142817918600AD6786 /* MyIncomeListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFE54122817918600AD6786 /* MyIncomeListCell.m */; };
@@ -2889,6 +2890,8 @@
 		BCF880F12B91C7580007B8F0 /* Config-release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Config-release.xcconfig"; sourceTree = "<group>"; };
 		BCFC09CB2C47FB5C009A727F /* CloudAccompanyLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = CloudAccompanyLibrary.framework; sourceTree = "<group>"; };
 		BCFC09CD2C47FB6F009A727F /* KSToolLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = KSToolLibrary.framework; sourceTree = "<group>"; };
+		BCFC09DB2C48E49F009A727F /* UserVip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserVip.h; sourceTree = "<group>"; };
+		BCFC09DC2C48E4A0009A727F /* UserVip.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserVip.m; sourceTree = "<group>"; };
 		BCFE540728168DFF00AD6786 /* KSButtonStatusView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KSButtonStatusView.h; sourceTree = "<group>"; };
 		BCFE540828168DFF00AD6786 /* KSButtonStatusView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KSButtonStatusView.m; sourceTree = "<group>"; };
 		BCFE540E28178FF600AD6786 /* MyIncomeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyIncomeViewController.h; sourceTree = "<group>"; };
@@ -3488,6 +3491,8 @@
 				27A2F62F27E70E56009E2380 /* UserInfo.m */,
 				BC14E4712AB2DAFD000C4983 /* StyleVideo.h */,
 				BC14E4722AB2DAFD000C4983 /* StyleVideo.m */,
+				BCFC09DB2C48E49F009A727F /* UserVip.h */,
+				BCFC09DC2C48E4A0009A727F /* UserVip.m */,
 			);
 			path = Model;
 			sourceTree = "<group>";
@@ -8265,6 +8270,7 @@
 				BC063D842823CEFE000EB350 /* AddressListModel.m in Sources */,
 				BCA353DB2858D97C00377661 /* MusicRoomListModel.m in Sources */,
 				BC1365CF280D48B800EB03E2 /* HomeworkListModel.m in Sources */,
+				BCFC09DD2C48E4A0009A727F /* UserVip.m in Sources */,
 				BCECE2142B3D5F0800C0D555 /* FeedbackListModel.m in Sources */,
 				BC38C42A2AF900E100ABFCC2 /* KSAudioPlayAnimationView.m in Sources */,
 				BC71DF0E2A89F470003F165E /* KSRateSliderView.m in Sources */,

+ 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"

+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagSvip.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagSvip.imageset/mineCenter_tagSvip@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagSvip.imageset/mineCenter_tagSvip@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagSvipExpired.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagSvipExpired.imageset/mineCenter_tagSvipExpired@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagSvipExpired.imageset/mineCenter_tagSvipExpired@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagVip.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagVip.imageset/mineCenter_tagVip@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagVip.imageset/mineCenter_tagVip@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagVipExpired.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagVipExpired.imageset/mineCenter_tagVipExpired@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mineCenter_tagVipExpired.imageset/mineCenter_tagVipExpired@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mine_svip.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mine_svip.imageset/mine_svip@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mine_svip.imageset/mine_svip@3x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mine_vip.imageset/mine_vip@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Home/home_vefi/mine_vip.imageset/mine_vip@3x.png


+ 12 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeNavView.m

@@ -42,7 +42,18 @@
         }
     }
     
-    NSString *viperImage = infoMessage.isVip ? @"mine_vip" : @"mine_nomal";
+    NSString *viperImage = @"";
+    NSString *vipType = infoMessage.userVip.vipType;
+
+    if ([vipType isEqualToString:@"PERMANENT_SVIP"] || [vipType isEqualToString:@"SVIP"]) {
+        viperImage = @"mine_svip";
+    }
+    else if ([vipType isEqualToString:@"VIP"]) {
+        viperImage = @"mine_vip";
+    }
+    else {
+        viperImage = @"";
+    }
     [self.viperImage setImage:[UIImage imageNamed:viperImage]];
 }
 

+ 5 - 6
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeNavView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -79,11 +79,10 @@
                             <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_nomal" translatesAutoresizingMaskIntoConstraints="NO" id="030-NP-gEA">
-                            <rect key="frame" x="72" y="14.5" width="34" height="15"/>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="752" image="mine_nomal" translatesAutoresizingMaskIntoConstraints="NO" id="030-NP-gEA">
+                            <rect key="frame" x="72" y="13" width="34" height="18"/>
                             <constraints>
-                                <constraint firstAttribute="height" constant="15" id="8P2-Ec-bnf"/>
-                                <constraint firstAttribute="width" constant="34" id="PEK-n6-pcq"/>
+                                <constraint firstAttribute="height" constant="18" id="8P2-Ec-bnf"/>
                             </constraints>
                         </imageView>
                     </subviews>

+ 4 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserInfo.h

@@ -7,7 +7,7 @@
 
 #import <Foundation/Foundation.h>
 #import "StyleVideo.h"
-
+#import "UserVip.h"
 
 
 @interface UserInfo : NSObject <NSCoding, NSCopying>
@@ -84,6 +84,9 @@
 @property (nonatomic, strong) NSString *imToken;
 @property (nonatomic, assign) NSInteger tenantAlbumStatus;
 
+@property (nonatomic, strong) UserVip *userVip;
+
+
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;
 - (NSDictionary *)dictionaryRepresentation;

+ 9 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserInfo.m

@@ -79,6 +79,7 @@ NSString *const kUserInfoUserType = @"userType";
 NSString *const kUserInfoEntryStatus = @"entryStatus";
 NSString *const kUserInfoImToken = @"imToken";
 NSString *const kUserInfoTenantAlbumStatus = @"tenantAlbumStatus";
+NSString *const kUserInfoUserVip = @"userVip";
 
 
 @interface UserInfo ()
@@ -160,6 +161,8 @@ NSString *const kUserInfoTenantAlbumStatus = @"tenantAlbumStatus";
 @synthesize entryStatus = _entryStatus;
 @synthesize imToken = _imToken;
 @synthesize tenantAlbumStatus = _tenantAlbumStatus;
+@synthesize userVip = _userVip;
+
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -256,6 +259,7 @@ NSString *const kUserInfoTenantAlbumStatus = @"tenantAlbumStatus";
             self.entryStatus = [self objectOrNilForKey:kUserInfoEntryStatus fromDictionary:dict];
         self.imToken = [self objectOrNilForKey:kUserInfoImToken fromDictionary:dict];
         self.tenantAlbumStatus = [[self objectOrNilForKey:kUserInfoTenantAlbumStatus fromDictionary:dict] integerValue];
+        self.userVip = [UserVip modelObjectWithDictionary:[dict objectForKey:kUserInfoUserVip]];
     }
     
     return self;
@@ -346,6 +350,8 @@ NSString *const kUserInfoTenantAlbumStatus = @"tenantAlbumStatus";
     [mutableDict setValue:self.entryStatus forKey:kUserInfoEntryStatus];
     [mutableDict setValue:self.imToken forKey:kUserInfoImToken];
     [mutableDict setValue:[NSNumber numberWithInteger:self.tenantAlbumStatus] forKey:kUserInfoTenantAlbumStatus];
+    [mutableDict setValue:[self.userVip dictionaryRepresentation] forKey:kUserInfoUserVip];
+
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -443,6 +449,7 @@ NSString *const kUserInfoTenantAlbumStatus = @"tenantAlbumStatus";
     self.entryStatus = [aDecoder decodeObjectForKey:kUserInfoEntryStatus];
     self.imToken = [aDecoder decodeObjectForKey:kUserInfoImToken];
     self.tenantAlbumStatus = [aDecoder decodeIntegerForKey:kUserInfoTenantAlbumStatus];
+    self.userVip = [aDecoder decodeObjectForKey:kUserInfoUserVip];
 
     return self;
 }
@@ -521,6 +528,7 @@ NSString *const kUserInfoTenantAlbumStatus = @"tenantAlbumStatus";
     [aCoder encodeObject:_entryStatus forKey:kUserInfoEntryStatus];
     [aCoder encodeObject:_imToken forKey:kUserInfoImToken];
     [aCoder encodeInteger:_tenantAlbumStatus forKey:kUserInfoTenantAlbumStatus];
+    [aCoder encodeObject:_userVip forKey:kUserInfoUserVip];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -600,6 +608,7 @@ NSString *const kUserInfoTenantAlbumStatus = @"tenantAlbumStatus";
         copy.entryStatus = [self.entryStatus copyWithZone:zone];
         copy.imToken = [self.imToken copyWithZone:zone];
         copy.tenantAlbumStatus = self.tenantAlbumStatus;
+        copy.userVip = [self.userVip copyWithZone:zone];
     }
     
     return copy;

+ 25 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserVip.h

@@ -0,0 +1,25 @@
+//
+//  UserVip.h
+//
+//  Created by Steven  on 2024/7/18
+//  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+
+@interface UserVip : NSObject <NSCoding, NSCopying>
+
+@property (nonatomic, strong) NSString *expireVipType;
+@property (nonatomic, strong) NSString *svipEndDate;
+@property (nonatomic, strong) NSString *vipType;
+@property (nonatomic, assign) NSInteger vipEndDays;
+@property (nonatomic, assign) NSInteger svipEndDays;
+@property (nonatomic, strong) NSString *vipEndDate;
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
+- (instancetype)initWithDictionary:(NSDictionary *)dict;
+- (NSDictionary *)dictionaryRepresentation;
+
+@end

+ 134 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserVip.m

@@ -0,0 +1,134 @@
+//
+//  UserVip.m
+//
+//  Created by Steven  on 2024/7/18
+//  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
+//
+
+#import "UserVip.h"
+
+
+NSString *const kUserVipExpireVipType = @"expireVipType";
+NSString *const kUserVipSvipEndDate = @"svipEndDate";
+NSString *const kUserVipVipType = @"vipType";
+NSString *const kUserVipVipEndDays = @"vipEndDays";
+NSString *const kUserVipSvipEndDays = @"svipEndDays";
+NSString *const kUserVipVipEndDate = @"vipEndDate";
+
+
+@interface UserVip ()
+
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
+
+@end
+
+@implementation UserVip
+
+@synthesize expireVipType = _expireVipType;
+@synthesize svipEndDate = _svipEndDate;
+@synthesize vipType = _vipType;
+@synthesize vipEndDays = _vipEndDays;
+@synthesize svipEndDays = _svipEndDays;
+@synthesize vipEndDate = _vipEndDate;
+
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
+{
+    return [[self alloc] initWithDictionary:dict];
+}
+
+- (instancetype)initWithDictionary:(NSDictionary *)dict
+{
+    self = [super init];
+    
+    // This check serves to make sure that a non-NSDictionary object
+    // passed into the model class doesn't break the parsing.
+    if(self && [dict isKindOfClass:[NSDictionary class]]) {
+            self.expireVipType = [self objectOrNilForKey:kUserVipExpireVipType fromDictionary:dict];
+            self.svipEndDate = [self objectOrNilForKey:kUserVipSvipEndDate fromDictionary:dict];
+            self.vipType = [self objectOrNilForKey:kUserVipVipType fromDictionary:dict];
+            self.vipEndDays = [[self objectOrNilForKey:kUserVipVipEndDays fromDictionary:dict] integerValue];
+            self.svipEndDays = [[self objectOrNilForKey:kUserVipSvipEndDays fromDictionary:dict] integerValue];
+            self.vipEndDate = [self objectOrNilForKey:kUserVipVipEndDate fromDictionary:dict];
+
+    }
+    
+    return self;
+    
+}
+
+- (NSDictionary *)dictionaryRepresentation
+{
+    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
+    [mutableDict setValue:self.expireVipType forKey:kUserVipExpireVipType];
+    [mutableDict setValue:self.svipEndDate forKey:kUserVipSvipEndDate];
+    [mutableDict setValue:self.vipType forKey:kUserVipVipType];
+    [mutableDict setValue:[NSNumber numberWithInteger:self.vipEndDays] forKey:kUserVipVipEndDays];
+    [mutableDict setValue:[NSNumber numberWithInteger:self.svipEndDays] forKey:kUserVipSvipEndDays];
+    [mutableDict setValue:self.vipEndDate forKey:kUserVipVipEndDate];
+
+    return [NSDictionary dictionaryWithDictionary:mutableDict];
+}
+
+- (NSString *)description 
+{
+    return [NSString stringWithFormat:@"%@", [self dictionaryRepresentation]];
+}
+
+#pragma mark - Helper Method
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict
+{
+    id object = [dict objectForKey:aKey];
+    if ([object isKindOfClass:[NSNumber class]]) {
+        NSNumber *number = object;
+        object = [number stringValue];
+    }
+    return [object isEqual:[NSNull null]] ? nil : object;
+}
+
+
+#pragma mark - NSCoding Methods
+
+- (id)initWithCoder:(NSCoder *)aDecoder
+{
+    self = [super init];
+
+    self.expireVipType = [aDecoder decodeObjectForKey:kUserVipExpireVipType];
+    self.svipEndDate = [aDecoder decodeObjectForKey:kUserVipSvipEndDate];
+    self.vipType = [aDecoder decodeObjectForKey:kUserVipVipType];
+    self.vipEndDays = [aDecoder decodeIntegerForKey:kUserVipVipEndDays];
+    self.svipEndDays = [aDecoder decodeIntegerForKey:kUserVipSvipEndDays];
+    self.vipEndDate = [aDecoder decodeObjectForKey:kUserVipVipEndDate];
+    return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)aCoder
+{
+
+    [aCoder encodeObject:_expireVipType forKey:kUserVipExpireVipType];
+    [aCoder encodeObject:_svipEndDate forKey:kUserVipSvipEndDate];
+    [aCoder encodeObject:_vipType forKey:kUserVipVipType];
+    [aCoder encodeInteger:_vipEndDays forKey:kUserVipVipEndDays];
+    [aCoder encodeInteger:_svipEndDays forKey:kUserVipSvipEndDays];
+    [aCoder encodeObject:_vipEndDate forKey:kUserVipVipEndDate];
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+    UserVip *copy = [[UserVip alloc] init];
+    
+    if (copy) {
+
+        copy.expireVipType = [self.expireVipType copyWithZone:zone];
+        copy.svipEndDate = [self.svipEndDate copyWithZone:zone];
+        copy.vipType = [self.vipType copyWithZone:zone];
+        copy.vipEndDays = self.vipEndDays;
+        copy.svipEndDays = self.svipEndDays;
+        copy.vipEndDate = [self.vipEndDate copyWithZone:zone];
+    }
+    
+    return copy;
+}
+
+
+@end

+ 12 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/HeadView/MinePageTopView.m

@@ -89,13 +89,22 @@
         }
         
         NSArray *tagArray = [infoMessage.tag componentsSeparatedByString:@","];
-        NSString *viperImage = infoMessage.isVip ? @"mine_vip" : @"mine_nomal";
-        if (infoMessage.isVip) {
-            self.userAvatar.layer.borderColor = HexRGB(0xFFE0B9).CGColor;
+        NSString *viperImage = @"";
+        NSString *vipType = infoMessage.userVip.vipType;
+        
+        if ([vipType isEqualToString:@"PERMANENT_SVIP"] || [vipType isEqualToString:@"SVIP"]) {
+            self.userAvatar.layer.borderColor = HexRGB(0xF0AF88).CGColor;
+            viperImage = @"mine_svip";
+        }
+        else if ([vipType isEqualToString:@"VIP"]) {
+            self.userAvatar.layer.borderColor = HexRGB(0xFADA9B).CGColor;
+            viperImage = @"mine_vip";
         }
         else {
             self.userAvatar.layer.borderColor = HexRGB(0xffffff).CGColor;
+            viperImage = @"";
         }
+        
         [self.viperImage setImage:[UIImage imageNamed:viperImage]];
         
         [self.styleImage setImage:[UIImage imageNamed:@"mineStyle_nomal"]];

+ 8 - 9
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/HeadView/MinePageTopView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -348,11 +348,10 @@
                         </userDefinedRuntimeAttribute>
                     </userDefinedRuntimeAttributes>
                 </imageView>
-                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_nomal" translatesAutoresizingMaskIntoConstraints="NO" id="O4w-5f-Puh">
-                    <rect key="frame" x="82" y="61" width="34" height="15"/>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_svip" translatesAutoresizingMaskIntoConstraints="NO" id="O4w-5f-Puh">
+                    <rect key="frame" x="74" y="60" width="39" height="18"/>
                     <constraints>
-                        <constraint firstAttribute="height" constant="15" id="ogj-H9-eEZ"/>
-                        <constraint firstAttribute="width" constant="34" id="qVC-Jx-k8a"/>
+                        <constraint firstAttribute="height" constant="18" id="ogj-H9-eEZ"/>
                     </constraints>
                 </imageView>
             </subviews>
@@ -362,9 +361,9 @@
                 <constraint firstItem="w1f-9h-A4M" firstAttribute="top" secondItem="3JZ-4N-xLY" secondAttribute="top" constant="39" id="DWL-gY-dzx"/>
                 <constraint firstItem="w1f-9h-A4M" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="14" id="KJi-WY-Wlp"/>
                 <constraint firstItem="w1f-9h-A4M" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="39" id="Kbj-BA-WD8"/>
-                <constraint firstItem="O4w-5f-Puh" firstAttribute="centerX" secondItem="3JZ-4N-xLY" secondAttribute="trailing" constant="-5" id="Nig-3E-QZK"/>
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="w1f-9h-A4M" secondAttribute="trailing" constant="14" id="Oop-Hc-pS9"/>
-                <constraint firstItem="O4w-5f-Puh" firstAttribute="bottom" secondItem="3JZ-4N-xLY" secondAttribute="bottom" constant="-2" id="RQO-qJ-vPd"/>
+                <constraint firstItem="O4w-5f-Puh" firstAttribute="bottom" secondItem="3JZ-4N-xLY" secondAttribute="bottom" id="RQO-qJ-vPd"/>
+                <constraint firstItem="O4w-5f-Puh" firstAttribute="leading" secondItem="3JZ-4N-xLY" secondAttribute="leading" constant="48" id="v6m-RP-GQ1"/>
                 <constraint firstItem="w1f-9h-A4M" firstAttribute="leading" secondItem="3JZ-4N-xLY" secondAttribute="leading" constant="-12" id="zGP-9T-haE"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
@@ -404,7 +403,7 @@
         <image name="mineStyle_nomal" width="23" height="23"/>
         <image name="mineVideo_nomal" width="23" height="23"/>
         <image name="mine_instrument_logo" width="68" height="17"/>
-        <image name="mine_nomal" width="34" height="15"/>
+        <image name="mine_svip" width="39" height="18"/>
         <image name="qualification_icon" width="39" height="16"/>
         <image name="user_default_avatal" width="52" height="52"/>
     </resources>

+ 3 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Model/TeacherInfo.h

@@ -6,6 +6,7 @@
 //
 
 #import <Foundation/Foundation.h>
+#import "UserVip.h"
 
 
 
@@ -59,6 +60,8 @@
 
 @property (nonatomic, strong) NSString *defaultSubjectName;
 
+@property (nonatomic, strong) UserVip *userVip;
+
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;
 - (NSDictionary *)dictionaryRepresentation;

+ 8 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Model/TeacherInfo.m

@@ -51,6 +51,7 @@ NSString *const kTeacherInfoTeacherFlag = @"teacherFlag";
 NSString *const kTeacherInfoIsSettlement = @"isSettlement";
 NSString *const kTeacherInfoDefaultSubject = @"defaultSubject";
 NSString *const kTeacherInfoDefaultSubjectName = @"defaultSubjectName";
+NSString *const kTeacherInfoUserVip = @"userVip";
 
 
 @interface TeacherInfo ()
@@ -104,6 +105,7 @@ NSString *const kTeacherInfoDefaultSubjectName = @"defaultSubjectName";
 @synthesize isSettlement = _isSettlement;
 @synthesize defaultSubject = _defaultSubject;
 @synthesize defaultSubjectName = _defaultSubjectName;
+@synthesize userVip = _userVip;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -160,6 +162,7 @@ NSString *const kTeacherInfoDefaultSubjectName = @"defaultSubjectName";
         self.isSettlement = [[self objectOrNilForKey:kTeacherInfoIsSettlement fromDictionary:dict] integerValue];
         self.defaultSubject = [self objectOrNilForKey:kTeacherInfoDefaultSubject fromDictionary:dict];
         self.defaultSubjectName = [self objectOrNilForKey:kTeacherInfoDefaultSubjectName fromDictionary:dict];
+        self.userVip = [UserVip modelObjectWithDictionary:[dict objectForKey:kTeacherInfoUserVip]];
     }
     
     return self;
@@ -212,6 +215,7 @@ NSString *const kTeacherInfoDefaultSubjectName = @"defaultSubjectName";
     [mutableDict setValue:[NSNumber numberWithInteger:self.isSettlement] forKey:kTeacherInfoIsSettlement];
     [mutableDict setValue:self.defaultSubject forKey:kTeacherInfoDefaultSubject];
     [mutableDict setValue:self.defaultSubjectName forKey:kTeacherInfoDefaultSubjectName];
+    [mutableDict setValue:[self.userVip dictionaryRepresentation] forKey:kTeacherInfoUserVip];
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -281,6 +285,7 @@ NSString *const kTeacherInfoDefaultSubjectName = @"defaultSubjectName";
     self.isSettlement = [aDecoder decodeIntegerForKey:kTeacherInfoIsSettlement];
     self.defaultSubject = [aDecoder decodeObjectForKey:kTeacherInfoDefaultSubject];
     self.defaultSubjectName = [aDecoder decodeObjectForKey:kTeacherInfoDefaultSubjectName];
+    self.userVip = [aDecoder decodeObjectForKey:kTeacherInfoUserVip];
     return self;
 }
 
@@ -330,6 +335,8 @@ NSString *const kTeacherInfoDefaultSubjectName = @"defaultSubjectName";
     [aCoder encodeInteger:_isSettlement forKey:kTeacherInfoIsSettlement];
     [aCoder encodeObject:_defaultSubject forKey:kTeacherInfoDefaultSubject];
     [aCoder encodeObject:_defaultSubjectName forKey:kTeacherInfoDefaultSubjectName];
+    [aCoder encodeObject:_userVip forKey:kTeacherInfoUserVip];
+
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -381,6 +388,7 @@ NSString *const kTeacherInfoDefaultSubjectName = @"defaultSubjectName";
         copy.isSettlement = self.isSettlement;
         copy.defaultSubject = [self.defaultSubject copyWithZone:zone];
         copy.defaultSubjectName = [self.defaultSubjectName copyWithZone:zone];
+        copy.userVip = [self.userVip copyWithZone:zone];
     }
     return copy;
 }

+ 72 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineDescView.m

@@ -22,6 +22,10 @@
 
 @property (nonatomic, copy) MineViewCallback callback;
 
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *tagViewWidth;
+@property (weak, nonatomic) IBOutlet UIImageView *memberLogoTag;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *memberDescLeft;
+
 @end
 
 @implementation MineDescView
@@ -35,7 +39,73 @@
     self.fansCount.text = [NSString stringWithFormat:@"%.0f",infoMessage.fansNum];
     self.finishCourse.text = [NSString stringWithFormat:@"%.0f",infoMessage.expTime];
     self.unfinishCourse.text = [NSString stringWithFormat:@"%.0f",infoMessage.unExpTime];
-    self.memberCountLabel.text = [NSString stringWithFormat:@"会员有效期剩余%.0f天",infoMessage.membershipDays];
+    
+    [self configMemberDisplay:infoMessage.userVip];
+    
+}
+
+- (void)configMemberDisplay:(UserVip *)userVip {
+    NSString *displayImg = @"";
+    NSMutableAttributedString *descAttr = nil;
+    
+    if ([userVip.vipType isEqualToString:@"PERMANENT_SVIP"]) {
+        displayImg = @"mineCenter_tagSvip";
+        NSString *desc = @"您已是永久SVIP";
+        descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+        [descAttr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightMedium], NSForegroundColorAttributeName:HexRGB(0xFF623A)} range:[desc rangeOfString:@"永久SVIP"]];
+    }
+    else if ([userVip.vipType isEqualToString:@"SVIP"]) {
+        displayImg = @"mineCenter_tagSvip";
+        NSString *timeStr = [[userVip.svipEndDate componentsSeparatedByString:@" "] firstObject];
+        NSString *desc = [NSString stringWithFormat:@"SVIP有效期至 %@", [NSString returnNoNullStringWithString:timeStr]];
+        
+        descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+        [descAttr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightMedium], NSForegroundColorAttributeName:HexRGB(0xFF623A)} range:[desc rangeOfString:timeStr]];
+        
+    }
+    else if ([userVip.vipType isEqualToString:@"VIP"]) {
+        displayImg = @"mineCenter_tagVip";
+        NSString *timeStr = [[userVip.vipEndDate componentsSeparatedByString:@" "] firstObject];
+        NSString *desc = [NSString stringWithFormat:@"VIP有效期至 %@", [NSString returnNoNullStringWithString:timeStr]];
+        
+        descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+        [descAttr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightMedium], NSForegroundColorAttributeName:HexRGB(0xFF623A)} range:[desc rangeOfString:timeStr]];
+    }
+    else {
+        if ([NSString isEmptyString:userVip.expireVipType]) {
+            displayImg = @"";
+            NSString *desc = @"您还未开通会员哦~";
+            descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+        }
+        else {
+            if ([userVip.expireVipType isEqualToString:@"SVIP"]) {
+                displayImg = @"mineCenter_tagSvipExpired";
+                NSString *desc = @"SVIP已过期";
+                descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+            }
+            else if ([userVip.expireVipType isEqualToString:@"VIP"]) {
+                displayImg = @"mineCenter_tagVipExpired";
+                NSString *desc = @"VIP已过期";
+                descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+            }
+            else if ([userVip.expireVipType isEqualToString:@"ALL_VIP"]) {
+                displayImg = @"";
+                NSString *desc = @"会员已过期";
+                descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+            }
+        }
+    }
+    if ([NSString isEmptyString:displayImg]) {
+        self.memberDescLeft.constant = 0.0f;
+        self.tagViewWidth.constant = 0.0;
+    }
+    else {
+        self.memberDescLeft.constant = 5.0f;
+        self.tagViewWidth.constant = 18.0;
+    }
+    [self.memberLogoTag setImage:[UIImage imageNamed:displayImg]];
+    self.memberCountLabel.attributedText = descAttr;
+    
 }
 
 - (IBAction)fansDetail:(id)sender {
@@ -81,7 +151,7 @@
 }
 
 - (CGFloat)getViewHeight {
-    return (self.memberViewHeight.constant) / 2 + 10 + self.descViewHeight.constant;
+    return (self.memberViewHeight.constant) / 2 + 4 + self.descViewHeight.constant;
 }
 
 

+ 25 - 14
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineDescView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" 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="21679"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -19,17 +19,24 @@
                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="member_bg" translatesAutoresizingMaskIntoConstraints="NO" id="DzB-t0-SFA">
                             <rect key="frame" x="0.0" y="0.0" width="353" height="82"/>
                         </imageView>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="member_logo" translatesAutoresizingMaskIntoConstraints="NO" id="DEK-2J-hc1">
-                            <rect key="frame" x="20" y="18" width="19" height="18"/>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mineCenter_tagSvip" translatesAutoresizingMaskIntoConstraints="NO" id="DEK-2J-hc1">
+                            <rect key="frame" x="17" y="14" width="18" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="18" id="RcF-uk-vDP"/>
+                                <constraint firstAttribute="height" constant="18" id="bxx-eU-DuX"/>
+                            </constraints>
                         </imageView>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="会员有效期剩余xx天" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kH6-Vs-sec">
-                            <rect key="frame" x="47" y="18.666666666666668" width="129" height="17.000000000000004"/>
-                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kH6-Vs-sec">
+                            <rect key="frame" x="40" y="13" width="0.0" height="20"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="20" id="RtY-02-krd"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" name=".AppleSystemUIFont" family=".AppleSystemUIFont" pointSize="14"/>
                             <color key="textColor" red="0.49803921569999998" green="0.41960784309999999" blue="0.2470588235" alpha="1" colorSpace="calibratedRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9O7-Xb-0Z9">
-                            <rect key="frame" x="263" y="14" width="74" height="26"/>
+                            <rect key="frame" x="263" y="10" width="74" height="26"/>
                             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                             <constraints>
                                 <constraint firstAttribute="width" constant="74" id="H9i-xX-fBT"/>
@@ -45,21 +52,22 @@
                     </subviews>
                     <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     <constraints>
-                        <constraint firstItem="DEK-2J-hc1" firstAttribute="top" secondItem="BQE-Gw-O6q" secondAttribute="top" constant="18" id="CwV-bH-pBx"/>
-                        <constraint firstItem="kH6-Vs-sec" firstAttribute="leading" secondItem="DEK-2J-hc1" secondAttribute="trailing" constant="8" id="DBO-Ly-GAg"/>
+                        <constraint firstItem="DEK-2J-hc1" firstAttribute="top" secondItem="BQE-Gw-O6q" secondAttribute="top" constant="14" id="CwV-bH-pBx"/>
+                        <constraint firstItem="kH6-Vs-sec" firstAttribute="leading" secondItem="DEK-2J-hc1" secondAttribute="trailing" constant="5" id="DBO-Ly-GAg"/>
                         <constraint firstAttribute="bottom" secondItem="DzB-t0-SFA" secondAttribute="bottom" id="EHa-qc-M7o"/>
                         <constraint firstAttribute="trailing" secondItem="DzB-t0-SFA" secondAttribute="trailing" id="IFA-xk-bZh"/>
-                        <constraint firstItem="DEK-2J-hc1" firstAttribute="leading" secondItem="BQE-Gw-O6q" secondAttribute="leading" constant="20" id="JCN-U0-obJ"/>
+                        <constraint firstItem="DEK-2J-hc1" firstAttribute="leading" secondItem="BQE-Gw-O6q" secondAttribute="leading" constant="17" id="JCN-U0-obJ"/>
                         <constraint firstItem="DzB-t0-SFA" firstAttribute="top" secondItem="BQE-Gw-O6q" secondAttribute="top" id="VTD-7s-eLe"/>
                         <constraint firstItem="kH6-Vs-sec" firstAttribute="centerY" secondItem="DEK-2J-hc1" secondAttribute="centerY" id="Xb3-g0-FDv"/>
                         <constraint firstAttribute="trailing" secondItem="9O7-Xb-0Z9" secondAttribute="trailing" constant="16" id="dvG-ia-H1f"/>
                         <constraint firstAttribute="height" constant="82" id="gbV-Kr-Uh3"/>
                         <constraint firstItem="DzB-t0-SFA" firstAttribute="leading" secondItem="BQE-Gw-O6q" secondAttribute="leading" id="oN9-bU-Pf6"/>
+                        <constraint firstItem="9O7-Xb-0Z9" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="kH6-Vs-sec" secondAttribute="trailing" constant="4" id="pwg-QC-hnH"/>
                         <constraint firstItem="9O7-Xb-0Z9" firstAttribute="centerY" secondItem="kH6-Vs-sec" secondAttribute="centerY" id="v09-a0-U3o"/>
                     </constraints>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zdM-qB-RVf">
-                    <rect key="frame" x="14" y="51" width="365" height="80"/>
+                    <rect key="frame" x="14" y="45" width="365" height="80"/>
                     <subviews>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CH9-kh-Vhd">
                             <rect key="frame" x="0.0" y="0.0" width="121.66666666666667" height="80"/>
@@ -218,7 +226,7 @@
                 <constraint firstAttribute="trailing" secondItem="zdM-qB-RVf" secondAttribute="trailing" constant="14" id="1c1-SL-6cN"/>
                 <constraint firstAttribute="trailing" secondItem="BQE-Gw-O6q" secondAttribute="trailing" constant="20" id="1mf-r4-9g3"/>
                 <constraint firstItem="zdM-qB-RVf" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="4uh-ND-Vf9"/>
-                <constraint firstItem="zdM-qB-RVf" firstAttribute="top" secondItem="BQE-Gw-O6q" secondAttribute="centerY" constant="10" id="BbK-K6-30W"/>
+                <constraint firstItem="zdM-qB-RVf" firstAttribute="top" secondItem="BQE-Gw-O6q" secondAttribute="centerY" constant="4" id="BbK-K6-30W"/>
                 <constraint firstItem="BQE-Gw-O6q" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="Bvp-hL-ZxV"/>
                 <constraint firstItem="BQE-Gw-O6q" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" id="vLo-Gr-jOI"/>
             </constraints>
@@ -231,8 +239,11 @@
                 <outlet property="fansCount" destination="Spl-vz-Jvn" id="kFk-wZ-9A1"/>
                 <outlet property="finishCourse" destination="nhB-Xj-YjL" id="uRJ-1f-zs8"/>
                 <outlet property="memberCountLabel" destination="kH6-Vs-sec" id="hQE-Uf-YBH"/>
+                <outlet property="memberDescLeft" destination="DBO-Ly-GAg" id="tP3-5F-Ebd"/>
+                <outlet property="memberLogoTag" destination="DEK-2J-hc1" id="VxB-Yn-1Uv"/>
                 <outlet property="memberView" destination="BQE-Gw-O6q" id="yyP-cm-2Hg"/>
                 <outlet property="memberViewHeight" destination="gbV-Kr-Uh3" id="LNZ-SO-DqU"/>
+                <outlet property="tagViewWidth" destination="RcF-uk-vDP" id="Jvt-lj-A4Y"/>
                 <outlet property="unfinishCourse" destination="B1O-8o-mHT" id="eIb-yc-93O"/>
             </connections>
             <point key="canvasLocation" x="38.931297709923662" y="-265.14084507042253"/>
@@ -256,6 +267,6 @@
     <resources>
         <image name="member_bg" width="334" height="82"/>
         <image name="member_center" width="74" height="26"/>
-        <image name="member_logo" width="19" height="18"/>
+        <image name="mineCenter_tagSvip" width="18" height="18"/>
     </resources>
 </document>

+ 11 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineHeadView.m

@@ -47,14 +47,22 @@
 
 - (void)configMessage:(UserInfo *)infoMessage {
     NSArray *tagArray = [infoMessage.tag componentsSeparatedByString:@","];
-    if (infoMessage.isVip) {
-        self.userAvatal.layer.borderColor = HexRGB(0xFFE0B9).CGColor;
+    NSString *viperImage = @"";
+    NSString *vipType = infoMessage.userVip.vipType;
+    if ([vipType isEqualToString:@"PERMANENT_SVIP"] || [vipType isEqualToString:@"SVIP"]) {
+        self.userAvatal.layer.borderColor = HexRGB(0xF0AF88).CGColor;
+        viperImage = @"mine_svip";
+    }
+    else if ([vipType isEqualToString:@"VIP"]) {
+        self.userAvatal.layer.borderColor = HexRGB(0xFADA9B).CGColor;
+        viperImage = @"mine_vip";
     }
     else {
         self.userAvatal.layer.borderColor = HexRGB(0xffffff).CGColor;
+        viperImage = @"";
     }
     
-    NSString *viperImage = infoMessage.isVip ? @"mine_vip" : @"mine_nomal";
+    
     [self.viperImage setImage:[UIImage imageNamed:viperImage]];
     [self.styleImage setImage:[UIImage imageNamed:@"mineStyle_nomal"]];
     [self.videoImage setImage:[UIImage imageNamed:@"mineVideo_nomal"]];

+ 19 - 20
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineHeadView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -17,14 +17,14 @@
                     <rect key="frame" x="0.0" y="0.0" width="414" height="110"/>
                     <subviews>
                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_default_avatal" translatesAutoresizingMaskIntoConstraints="NO" id="Qfc-m1-p6a">
-                            <rect key="frame" x="15" y="5" width="60" height="60"/>
+                            <rect key="frame" x="15" y="5" width="64" height="64"/>
                             <constraints>
-                                <constraint firstAttribute="height" constant="60" id="UVg-YJ-Enj"/>
-                                <constraint firstAttribute="width" constant="60" id="WOW-Ww-MSg"/>
+                                <constraint firstAttribute="height" constant="64" id="UVg-YJ-Enj"/>
+                                <constraint firstAttribute="width" constant="64" id="WOW-Ww-MSg"/>
                             </constraints>
                             <userDefinedRuntimeAttributes>
                                 <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                    <real key="value" value="30"/>
+                                    <real key="value" value="32"/>
                                 </userDefinedRuntimeAttribute>
                                 <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
                                     <real key="value" value="2"/>
@@ -35,19 +35,19 @@
                             </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="QPn-ge-mEt">
-                            <rect key="frame" x="85" y="23" width="41" height="24"/>
+                            <rect key="frame" x="89" y="25" width="41" height="24"/>
                             <fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/>
                             <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" 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="bTO-A2-pYt">
-                            <rect key="frame" x="263" y="87.5" width="37" height="15"/>
+                            <rect key="frame" x="269" y="89" width="31" height="15"/>
                             <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                             <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fw3-T6-lx2">
-                            <rect key="frame" x="300" y="85.5" width="95" height="19"/>
+                            <rect key="frame" x="300" y="87" width="95" height="19"/>
                             <subviews>
                                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Akw-bX-gxM" customClass="KSStarView">
                                     <rect key="frame" x="0.0" y="0.0" width="95" height="19"/>
@@ -65,14 +65,14 @@
                             </constraints>
                         </view>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="v0U-gH-2rd">
-                            <rect key="frame" x="15" y="5" width="60" height="60"/>
+                            <rect key="frame" x="15" y="5" width="64" height="64"/>
                             <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                             <connections>
                                 <action selector="toUserCenter:" destination="iN0-l3-epB" eventType="touchUpInside" id="ydh-hD-hMz"/>
                             </connections>
                         </button>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1mz-7i-YiM">
-                            <rect key="frame" x="60" y="83" width="84" height="24"/>
+                            <rect key="frame" x="54" y="84.5" width="84" height="24"/>
                             <subviews>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mineStyle_nomal" translatesAutoresizingMaskIntoConstraints="NO" id="iwC-il-8cq">
                                     <rect key="frame" x="4" y="4" width="16" height="16"/>
@@ -116,30 +116,29 @@
                             </connections>
                         </view>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="勋章:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cgZ-9q-1D4">
-                            <rect key="frame" x="23" y="87.5" width="37" height="15"/>
+                            <rect key="frame" x="23" y="89" width="31" height="15"/>
                             <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                             <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="HQj-mY-aBN">
-                            <rect key="frame" x="135" y="27" width="39" height="16"/>
+                            <rect key="frame" x="139" y="29" width="39" height="16"/>
                             <constraints>
                                 <constraint firstAttribute="width" constant="39" id="K4K-9C-b5a"/>
                                 <constraint firstAttribute="height" constant="16" id="eD6-D4-rNX"/>
                             </constraints>
                         </imageView>
                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="YBP-tz-Trz">
-                            <rect key="frame" x="180" y="27" width="39" height="16"/>
+                            <rect key="frame" x="184" y="29" width="39" height="16"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="16" id="YnY-gE-hGc"/>
                                 <constraint firstAttribute="width" constant="39" id="hbp-cI-NEE"/>
                             </constraints>
                         </imageView>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_nomal" translatesAutoresizingMaskIntoConstraints="NO" id="W7w-Qv-jgO">
-                            <rect key="frame" x="28" y="57.5" width="34" height="15"/>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_vip" translatesAutoresizingMaskIntoConstraints="NO" id="W7w-Qv-jgO">
+                            <rect key="frame" x="28.5" y="56" width="37" height="18"/>
                             <constraints>
-                                <constraint firstAttribute="width" constant="34" id="CNO-WI-SZ0"/>
-                                <constraint firstAttribute="height" constant="15" id="w9i-HB-67A"/>
+                                <constraint firstAttribute="height" constant="18" id="w9i-HB-67A"/>
                             </constraints>
                         </imageView>
                     </subviews>
@@ -157,7 +156,7 @@
                         <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="YBP-tz-Trz" secondAttribute="trailing" constant="10" id="IJb-S6-0Dq"/>
                         <constraint firstItem="1mz-7i-YiM" firstAttribute="leading" secondItem="cgZ-9q-1D4" secondAttribute="trailing" id="IrQ-V5-x4c"/>
                         <constraint firstItem="v0U-gH-2rd" firstAttribute="trailing" secondItem="Qfc-m1-p6a" secondAttribute="trailing" id="KVZ-uZ-xhf"/>
-                        <constraint firstItem="W7w-Qv-jgO" firstAttribute="centerY" secondItem="Qfc-m1-p6a" secondAttribute="bottom" id="T73-hP-tAc"/>
+                        <constraint firstItem="W7w-Qv-jgO" firstAttribute="bottom" secondItem="Qfc-m1-p6a" secondAttribute="bottom" constant="5" id="T73-hP-tAc"/>
                         <constraint firstItem="QPn-ge-mEt" firstAttribute="centerY" secondItem="v0U-gH-2rd" secondAttribute="centerY" id="Zfa-ZF-11e"/>
                         <constraint firstAttribute="height" constant="110" id="Zrl-wR-XDP"/>
                         <constraint firstItem="Qfc-m1-p6a" firstAttribute="top" secondItem="Cjp-6k-puJ" secondAttribute="top" constant="5" id="aGQ-Aj-LeI"/>
@@ -209,7 +208,7 @@
         <image name="mineMusic_nomal" width="24" height="23"/>
         <image name="mineStyle_nomal" width="23" height="23"/>
         <image name="mineVideo_nomal" width="23" height="23"/>
-        <image name="mine_nomal" width="34" height="15"/>
+        <image name="mine_vip" width="37" height="18"/>
         <image name="user_default_avatal" width="52" height="52"/>
     </resources>
 </document>

+ 12 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/TenantMineHeadView.m

@@ -48,15 +48,23 @@
     self.tenantName.text = [NSString returnNoNullStringWithString:infoMessage.tenantName];
 
     NSArray *tagArray = [infoMessage.tag componentsSeparatedByString:@","];
-    if (infoMessage.isVip) {
-        self.userAvatal.layer.borderColor = HexRGB(0xFFE0B9).CGColor;
+    NSString *viperImage = @"";
+    NSString *vipType = infoMessage.userVip.vipType;
+
+    if ([vipType isEqualToString:@"PERMANENT_SVIP"] || [vipType isEqualToString:@"SVIP"]) {
+        self.userAvatal.layer.borderColor = HexRGB(0xF0AF88).CGColor;
+        viperImage = @"mine_svip";
+    }
+    else if ([vipType isEqualToString:@"VIP"]) {
+        self.userAvatal.layer.borderColor = HexRGB(0xFADA9B).CGColor;
+        viperImage = @"mine_vip";
     }
     else {
         self.userAvatal.layer.borderColor = HexRGB(0xffffff).CGColor;
+        viperImage = @"";
     }
-    
-    NSString *viperImage = infoMessage.isVip ? @"mine_vip" : @"mine_nomal";
     [self.viperImage setImage:[UIImage imageNamed:viperImage]];
+    
     [self.styleImage setImage:[UIImage imageNamed:@"mineStyle_nomal"]];
     [self.videoImage setImage:[UIImage imageNamed:@"mineVideo_nomal"]];
     [self.liveImage setImage:[UIImage imageNamed:@"mineLive_nomal"]];

+ 11 - 12
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/TenantMineHeadView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" 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="22504"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -71,13 +71,13 @@
                             <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="rk5-S8-fb2">
-                            <rect key="frame" x="230" y="88.666666666666671" width="31" height="15"/>
+                            <rect key="frame" x="230" y="86" width="31" height="15"/>
                             <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                             <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wdE-hK-zbq">
-                            <rect key="frame" x="261" y="86.666666666666671" width="95" height="19"/>
+                            <rect key="frame" x="261" y="84" width="95" height="19"/>
                             <subviews>
                                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Vee-Pj-USj" customClass="KSStarView">
                                     <rect key="frame" x="0.0" y="0.0" width="95" height="19"/>
@@ -102,7 +102,7 @@
                             </connections>
                         </button>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="OIG-vb-9aR">
-                            <rect key="frame" x="54" y="84" width="84" height="24"/>
+                            <rect key="frame" x="54" y="81.666666666666671" width="84" height="24"/>
                             <subviews>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mineStyle_nomal" translatesAutoresizingMaskIntoConstraints="NO" id="y0K-rg-5qe">
                                     <rect key="frame" x="4" y="4" width="16" height="16"/>
@@ -146,7 +146,7 @@
                             </connections>
                         </view>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="勋章:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pug-lS-V28">
-                            <rect key="frame" x="23" y="88.666666666666671" width="31" height="15"/>
+                            <rect key="frame" x="23" y="86" width="31" height="15"/>
                             <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                             <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
                             <nil key="highlightedColor"/>
@@ -165,11 +165,10 @@
                                 <constraint firstAttribute="height" constant="16" id="WMh-DL-Rcf"/>
                             </constraints>
                         </imageView>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_nomal" translatesAutoresizingMaskIntoConstraints="NO" id="sLr-9M-73V">
-                            <rect key="frame" x="28" y="57.666666666666657" width="34" height="15"/>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_vip" translatesAutoresizingMaskIntoConstraints="NO" id="sLr-9M-73V">
+                            <rect key="frame" x="26.666666666666671" y="52" width="37" height="18"/>
                             <constraints>
-                                <constraint firstAttribute="width" constant="34" id="LCi-wq-oM8"/>
-                                <constraint firstAttribute="height" constant="15" id="Xik-sy-tnm"/>
+                                <constraint firstAttribute="height" constant="18" id="Xik-sy-tnm"/>
                             </constraints>
                         </imageView>
                     </subviews>
@@ -186,7 +185,7 @@
                         <constraint firstItem="vFq-5f-Squ" firstAttribute="top" secondItem="J7V-BY-Z3E" secondAttribute="bottom" constant="10" id="JBn-7m-3Mk"/>
                         <constraint firstItem="sLr-9M-73V" firstAttribute="centerX" secondItem="MUG-JJ-qQX" secondAttribute="centerX" id="NZY-1n-rgQ"/>
                         <constraint firstItem="wdE-hK-zbq" firstAttribute="leading" secondItem="rk5-S8-fb2" secondAttribute="trailing" id="P29-Uc-H8t"/>
-                        <constraint firstItem="sLr-9M-73V" firstAttribute="centerY" secondItem="MUG-JJ-qQX" secondAttribute="bottom" id="Qsm-SJ-vkk"/>
+                        <constraint firstItem="sLr-9M-73V" firstAttribute="bottom" secondItem="MUG-JJ-qQX" secondAttribute="bottom" constant="5" id="Qsm-SJ-vkk"/>
                         <constraint firstItem="Pf0-fO-g6q" firstAttribute="leading" secondItem="QHb-w1-1yi" secondAttribute="trailing" constant="6" id="Vxa-rb-qgx"/>
                         <constraint firstItem="7ie-6w-nwS" firstAttribute="leading" secondItem="MUG-JJ-qQX" secondAttribute="leading" id="Vy8-3K-WaH"/>
                         <constraint firstAttribute="trailing" secondItem="wdE-hK-zbq" secondAttribute="trailing" constant="19" id="Xf0-A0-CjC"/>
@@ -243,7 +242,7 @@
         <image name="mineMusic_nomal" width="24" height="23"/>
         <image name="mineStyle_nomal" width="23" height="23"/>
         <image name="mineVideo_nomal" width="23" height="23"/>
-        <image name="mine_nomal" width="34" height="15"/>
+        <image name="mine_vip" width="37" height="18"/>
         <image name="user_default_avatal" width="52" height="52"/>
     </resources>
 </document>