Commit b5319f5fd7aeb550b87aa10ae5270c97d3e98ca7

Authored by 张旭
2 parents bb5212da 3069e376

Merge branch 'master' of bj.gitlab.cnlive.com:ios-team/LiveVideoCloud

Showing 72 changed files with 895 additions and 73 deletions
LiveVideoCloud.xcodeproj/project.pbxproj
@@ -99,6 +99,7 @@ @@ -99,6 +99,7 @@
99 8178D46B1F021ED800AA78A4 /* LVCTelevisionModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D46A1F021ED800AA78A4 /* LVCTelevisionModel.m */; }; 99 8178D46B1F021ED800AA78A4 /* LVCTelevisionModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D46A1F021ED800AA78A4 /* LVCTelevisionModel.m */; };
100 8178D46E1F0225E500AA78A4 /* LVCTelevisionCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D46D1F0225E500AA78A4 /* LVCTelevisionCell.m */; }; 100 8178D46E1F0225E500AA78A4 /* LVCTelevisionCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D46D1F0225E500AA78A4 /* LVCTelevisionCell.m */; };
101 8178D4711F0239AD00AA78A4 /* LVCPlayerLoadingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D4701F0239AD00AA78A4 /* LVCPlayerLoadingView.m */; }; 101 8178D4711F0239AD00AA78A4 /* LVCPlayerLoadingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D4701F0239AD00AA78A4 /* LVCPlayerLoadingView.m */; };
  102 + 8181D53C1F134A7C00959E3D /* LVCBgmView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8181D53B1F134A7C00959E3D /* LVCBgmView.m */; };
102 81A483081E88B6140097A80A /* UIView+ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81A483071E88B6140097A80A /* UIView+ViewController.m */; }; 103 81A483081E88B6140097A80A /* UIView+ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81A483071E88B6140097A80A /* UIView+ViewController.m */; };
103 81F1C8401E8BC5CC0085C2B8 /* NSArray+Safety.m in Sources */ = {isa = PBXBuildFile; fileRef = 81F1C83F1E8BC5CC0085C2B8 /* NSArray+Safety.m */; }; 104 81F1C8401E8BC5CC0085C2B8 /* NSArray+Safety.m in Sources */ = {isa = PBXBuildFile; fileRef = 81F1C83F1E8BC5CC0085C2B8 /* NSArray+Safety.m */; };
104 81FB5B3C1E7A6FFC00F98E1D /* SevenSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 81FB5B3B1E7A6FFC00F98E1D /* SevenSwitch.m */; }; 105 81FB5B3C1E7A6FFC00F98E1D /* SevenSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 81FB5B3B1E7A6FFC00F98E1D /* SevenSwitch.m */; };
@@ -498,6 +499,8 @@ @@ -498,6 +499,8 @@
498 8178D46D1F0225E500AA78A4 /* LVCTelevisionCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCTelevisionCell.m; sourceTree = "<group>"; }; 499 8178D46D1F0225E500AA78A4 /* LVCTelevisionCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCTelevisionCell.m; sourceTree = "<group>"; };
499 8178D46F1F0239AD00AA78A4 /* LVCPlayerLoadingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCPlayerLoadingView.h; sourceTree = "<group>"; }; 500 8178D46F1F0239AD00AA78A4 /* LVCPlayerLoadingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCPlayerLoadingView.h; sourceTree = "<group>"; };
500 8178D4701F0239AD00AA78A4 /* LVCPlayerLoadingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCPlayerLoadingView.m; sourceTree = "<group>"; }; 501 8178D4701F0239AD00AA78A4 /* LVCPlayerLoadingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCPlayerLoadingView.m; sourceTree = "<group>"; };
  502 + 8181D53A1F134A7C00959E3D /* LVCBgmView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCBgmView.h; sourceTree = "<group>"; };
  503 + 8181D53B1F134A7C00959E3D /* LVCBgmView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCBgmView.m; sourceTree = "<group>"; };
501 81A483061E88B6140097A80A /* UIView+ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+ViewController.h"; sourceTree = "<group>"; }; 504 81A483061E88B6140097A80A /* UIView+ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+ViewController.h"; sourceTree = "<group>"; };
502 81A483071E88B6140097A80A /* UIView+ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+ViewController.m"; sourceTree = "<group>"; }; 505 81A483071E88B6140097A80A /* UIView+ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+ViewController.m"; sourceTree = "<group>"; };
503 81F1C83E1E8BC5CC0085C2B8 /* NSArray+Safety.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Safety.h"; sourceTree = "<group>"; }; 506 81F1C83E1E8BC5CC0085C2B8 /* NSArray+Safety.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Safety.h"; sourceTree = "<group>"; };
@@ -998,6 +1001,8 @@ @@ -998,6 +1001,8 @@
998 8156A7B31F0F8FCC007EE146 /* LVCAERootView.m */, 1001 8156A7B31F0F8FCC007EE146 /* LVCAERootView.m */,
999 8156A7B51F0F93AA007EE146 /* LVCAECommonView.h */, 1002 8156A7B51F0F93AA007EE146 /* LVCAECommonView.h */,
1000 8156A7B61F0F93AA007EE146 /* LVCAECommonView.m */, 1003 8156A7B61F0F93AA007EE146 /* LVCAECommonView.m */,
  1004 + 8181D53A1F134A7C00959E3D /* LVCBgmView.h */,
  1005 + 8181D53B1F134A7C00959E3D /* LVCBgmView.m */,
1001 8156A7B81F0F9541007EE146 /* AECommonCell.h */, 1006 8156A7B81F0F9541007EE146 /* AECommonCell.h */,
1002 8156A7B91F0F9541007EE146 /* AECommonCell.m */, 1007 8156A7B91F0F9541007EE146 /* AECommonCell.m */,
1003 ); 1008 );
@@ -2380,6 +2385,7 @@ @@ -2380,6 +2385,7 @@
2380 D2029CBF1E6EADE10027CD92 /* UIButton+WebCache.m in Sources */, 2385 D2029CBF1E6EADE10027CD92 /* UIButton+WebCache.m in Sources */,
2381 D2575C7E1E76A4F300E3A8FC /* NHPlaneViews.m in Sources */, 2386 D2575C7E1E76A4F300E3A8FC /* NHPlaneViews.m in Sources */,
2382 4B45CE761EB86A590079AFB7 /* BeingAnchorController.m in Sources */, 2387 4B45CE761EB86A590079AFB7 /* BeingAnchorController.m in Sources */,
  2388 + 8181D53C1F134A7C00959E3D /* LVCBgmView.m in Sources */,
2383 D2029CC51E6EADE10027CD92 /* UIView+WebCacheOperation.m in Sources */, 2389 D2029CC51E6EADE10027CD92 /* UIView+WebCacheOperation.m in Sources */,
2384 D260E6101F0CE8690095E49D /* praiseModel.m in Sources */, 2390 D260E6101F0CE8690095E49D /* praiseModel.m in Sources */,
2385 D2029CAB1E6EADE10027CD92 /* MJRefreshBackNormalFooter.m in Sources */, 2391 D2029CAB1E6EADE10027CD92 /* MJRefreshBackNormalFooter.m in Sources */,
LiveVideoCloud.xcodeproj/xcuserdata/iOS.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -13,5 +13,37 @@ @@ -13,5 +13,37 @@
13 stopOnStyle = "0"> 13 stopOnStyle = "0">
14 </BreakpointContent> 14 </BreakpointContent>
15 </BreakpointProxy> 15 </BreakpointProxy>
  16 + <BreakpointProxy
  17 + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
  18 + <BreakpointContent
  19 + shouldBeEnabled = "Yes"
  20 + ignoreCount = "0"
  21 + continueAfterRunningActions = "No"
  22 + filePath = "LiveVideoCloud/Classes/Sections/Mine/Views/LVCVideoMgrButton.m"
  23 + timestampString = "521361420.44809"
  24 + startingColumnNumber = "9223372036854775807"
  25 + endingColumnNumber = "9223372036854775807"
  26 + startingLineNumber = "21"
  27 + endingLineNumber = "21"
  28 + landmarkName = "-initWithFrame:left:"
  29 + landmarkType = "7">
  30 + </BreakpointContent>
  31 + </BreakpointProxy>
  32 + <BreakpointProxy
  33 + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
  34 + <BreakpointContent
  35 + shouldBeEnabled = "Yes"
  36 + ignoreCount = "0"
  37 + continueAfterRunningActions = "No"
  38 + filePath = "LiveVideoCloud/Classes/Sections/Mine/Views/LVCVideoMgrButton.m"
  39 + timestampString = "521361430.079111"
  40 + startingColumnNumber = "9223372036854775807"
  41 + endingColumnNumber = "9223372036854775807"
  42 + startingLineNumber = "46"
  43 + endingLineNumber = "46"
  44 + landmarkName = "-setVideoMgrState:"
  45 + landmarkType = "7">
  46 + </BreakpointContent>
  47 + </BreakpointProxy>
16 </Breakpoints> 48 </Breakpoints>
17 </Bucket> 49 </Bucket>
LiveVideoCloud/Classes/Sections/Mine/Controllers/LVCMineViewController.m
@@ -203,8 +203,10 @@ @@ -203,8 +203,10 @@
203 if (indexPath.row == 0) { 203 if (indexPath.row == 0) {
204 [self pushVC:[MineSettingViewController new]]; 204 [self pushVC:[MineSettingViewController new]];
205 } else if (indexPath.row == 1) { 205 } else if (indexPath.row == 1) {
206 - LVCShortVideoController *shortVideoVC = [[LVCShortVideoController alloc] init];  
207 - [self presentViewController:shortVideoVC animated:YES completion:NULL]; 206 + dispatch_async(dispatch_get_main_queue(), ^{
  207 + LVCShortVideoController *shortVideoVC = [[LVCShortVideoController alloc] init];
  208 + [self presentViewController:shortVideoVC animated:YES completion:NULL];
  209 + });
208 } 210 }
209 211
210 // if(indexPath.row == 0) 212 // if(indexPath.row == 0)
LiveVideoCloud/Classes/Sections/Mine/Controllers/LVCShortVideoController.m
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 28
29 [self.view addSubview:self.previewView]; 29 [self.view addSubview:self.previewView];
30 [self.view addSubview:self.aeRootView]; 30 [self.view addSubview:self.aeRootView];
31 - 31 +//
32 [self p_setupPreViewEvent]; 32 [self p_setupPreViewEvent];
33 33
34 } 34 }
@@ -133,8 +133,8 @@ @@ -133,8 +133,8 @@
133 { 133 {
134 if (!_aeRootView){ 134 if (!_aeRootView){
135 _aeRootView = [[LVCAERootView alloc] initWithFrame:kAERootViewHideFrame]; 135 _aeRootView = [[LVCAERootView alloc] initWithFrame:kAERootViewHideFrame];
136 - [(UIView *)[_aeRootView valueForKey:@"decalBtn"] setHidden:YES];  
137 - [(UIView *)[_aeRootView valueForKey:@"textDecalBtn"] setHidden:YES]; 136 +// [(UIView *)[_aeRootView valueForKey:@"decalBtn"] setHidden:YES];
  137 +// [(UIView *)[_aeRootView valueForKey:@"textDecalBtn"] setHidden:YES];
138 _aeRootView.userInteractionEnabled = YES; 138 _aeRootView.userInteractionEnabled = YES;
139 139
140 } 140 }
LiveVideoCloud/Classes/Sections/Mine/Model/AEModelTemplate.h
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 14
15 @property(nonatomic, assign)NSUInteger idx; 15 @property(nonatomic, assign)NSUInteger idx;
16 16
17 -@property(nonatomic, strong)UIImage *image; 17 +@property(nonatomic, strong)NSString *image;
18 18
19 @property(nonatomic, strong)NSString *txt; 19 @property(nonatomic, strong)NSString *txt;
20 20
LiveVideoCloud/Classes/Sections/Mine/Views/AECommonCell.m
@@ -56,8 +56,13 @@ @@ -56,8 +56,13 @@
56 56
57 - (void)setModel:(AEModelTemplate *)model 57 - (void)setModel:(AEModelTemplate *)model
58 { 58 {
59 - _thumb.image = model.image;  
60 - _tips.text = model.txt; 59 + _thumb.image = [UIImage imageNamed:model.image];
  60 + if (![model.txt isEqualToString:@"nil"]) {
  61 + _tips.text = model.txt;
  62 + } else {
  63 + _tips.text = @"";
  64 + }
  65 +
61 if (!model.txt || model.txt.length == 0){ 66 if (!model.txt || model.txt.length == 0){
62 _tips.hidden = YES; 67 _tips.hidden = YES;
63 _isOrigin = YES; 68 _isOrigin = YES;
LiveVideoCloud/Classes/Sections/Mine/Views/LVCAECommonView.h
@@ -11,6 +11,9 @@ @@ -11,6 +11,9 @@
11 11
12 @interface LVCAECommonView : UIView 12 @interface LVCAECommonView : UIView
13 13
14 -- (instancetype)initWithFrame:(CGRect)frame type:(NSUInteger)type data:(NSArray<__kindof AEModelTemplate *> *)dataSource; 14 +@property (nonatomic, copy)void(^FuncBlock)(AEModelTemplate *model);
  15 +
  16 +- (instancetype)initWithFrame:(CGRect)frame type:(NSUInteger)type data:(NSArray *)dataSource;
  17 +
15 18
16 @end 19 @end
LiveVideoCloud/Classes/Sections/Mine/Views/LVCAECommonView.m
@@ -13,18 +13,25 @@ @@ -13,18 +13,25 @@
13 @interface LVCAECommonView ()<UICollectionViewDelegate, UICollectionViewDataSource> 13 @interface LVCAECommonView ()<UICollectionViewDelegate, UICollectionViewDataSource>
14 14
15 @property (nonatomic, strong) UICollectionView *collectionView; 15 @property (nonatomic, strong) UICollectionView *collectionView;
16 -@property (nonatomic, strong) NSArray<__kindof AEModelTemplate *> *dataArray; 16 +@property (nonatomic, strong) NSMutableArray *dataArray;
17 17
18 @end 18 @end
19 19
20 @implementation LVCAECommonView 20 @implementation LVCAECommonView
21 21
22 -- (instancetype)initWithFrame:(CGRect)frame type:(NSUInteger)type data:(NSArray<__kindof AEModelTemplate *> *)dataSource { 22 +- (instancetype)initWithFrame:(CGRect)frame type:(NSUInteger)type data:(NSArray*)dataSource {
23 23
24 self = [super initWithFrame:frame]; 24 self = [super initWithFrame:frame];
25 if (self) { 25 if (self) {
26 26
27 - _dataArray = dataSource; 27 + _dataArray = [[NSMutableArray alloc] init];
  28 +
  29 + for (NSDictionary *dic in dataSource) {
  30 + AEModelTemplate *model = [AEModelTemplate mj_objectWithKeyValues:dic];
  31 + [_dataArray addObject:model];
  32 + }
  33 +
  34 + [self addSubview:self.collectionView];
28 35
29 } 36 }
30 return self; 37 return self;
@@ -46,21 +53,27 @@ @@ -46,21 +53,27 @@
46 _collectionView.backgroundColor = [UIColor clearColor]; 53 _collectionView.backgroundColor = [UIColor clearColor];
47 _collectionView.showsHorizontalScrollIndicator = NO; 54 _collectionView.showsHorizontalScrollIndicator = NO;
48 _collectionView.scrollsToTop = YES; 55 _collectionView.scrollsToTop = YES;
  56 +
  57 + [self.collectionView registerClass:[AECommonCell class] forCellWithReuseIdentifier:@"cell"];
  58 +
  59 +
49 } 60 }
50 return _collectionView; 61 return _collectionView;
51 } 62 }
52 63
53 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 64 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
54 { 65 {
55 - static NSString *identifier = @"AECommonCell";  
56 - AECommonCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; 66 +// static NSString *identifier = @"AECommonCell";
  67 + AECommonCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
57 cell.model = self.dataArray[indexPath.row]; 68 cell.model = self.dataArray[indexPath.row];
58 return cell; 69 return cell;
59 } 70 }
60 71
61 - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 72 - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
62 { 73 {
63 - 74 + if (self.FuncBlock) {
  75 + self.FuncBlock(_dataArray[indexPath.row]);
  76 + }
64 } 77 }
65 78
66 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 79 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
@@ -68,12 +81,10 @@ @@ -68,12 +81,10 @@
68 return self.dataArray.count; 81 return self.dataArray.count;
69 } 82 }
70 83
71 -  
72 -  
73 -- (NSArray<AEModelTemplate *> *)dataArray 84 +- (NSMutableArray *)dataArray
74 { 85 {
75 if (!_dataArray){ 86 if (!_dataArray){
76 - _dataArray = [[NSArray alloc] init]; 87 + _dataArray = [[NSMutableArray alloc] init];
77 } 88 }
78 return _dataArray; 89 return _dataArray;
79 } 90 }
LiveVideoCloud/Classes/Sections/Mine/Views/LVCAERootView.h
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 // 7 //
8 8
9 #import <UIKit/UIKit.h> 9 #import <UIKit/UIKit.h>
  10 +#import "AEModelTemplate.h"
10 11
11 typedef NS_ENUM(NSInteger, CNLiveSelectorType){ 12 typedef NS_ENUM(NSInteger, CNLiveSelectorType){
12 CNLiveSelectorType_Reverb, // 混响 13 CNLiveSelectorType_Reverb, // 混响
@@ -23,4 +24,9 @@ typedef NS_ENUM(NSUInteger, kAEStatus){ @@ -23,4 +24,9 @@ typedef NS_ENUM(NSUInteger, kAEStatus){
23 kAEShow, 24 kAEShow,
24 }; 25 };
25 26
  27 +@property (nonatomic, copy) void(^BgmVolumeBlock)(float origin, float dub); //音量回调
  28 +@property (nonatomic, copy) void(^BgmBlock)(AEModelTemplate *model);
  29 +@property (nonatomic, copy) void(^AEBlock)(AEModelTemplate *model);
  30 +@property (nonatomic, copy) void(^DEBlock)(AEModelTemplate *model);
  31 +
26 @end 32 @end
LiveVideoCloud/Classes/Sections/Mine/Views/LVCAERootView.m
@@ -9,10 +9,11 @@ @@ -9,10 +9,11 @@
9 #import "LVCAERootView.h" 9 #import "LVCAERootView.h"
10 #import "LVCAECommonView.h" 10 #import "LVCAECommonView.h"
11 #import "AEModelTemplate.h" 11 #import "AEModelTemplate.h"
  12 +#import "LVCBgmView.h"
12 13
13 @interface LVCAERootView () 14 @interface LVCAERootView ()
14 { 15 {
15 - NSMutableArray *_dataArray; 16 + NSArray *_dataArray;
16 } 17 }
17 18
18 @property (nonatomic, strong) UIButton *bgmBtn; //背景音乐 19 @property (nonatomic, strong) UIButton *bgmBtn; //背景音乐
@@ -21,7 +22,7 @@ @@ -21,7 +22,7 @@
21 @property (nonatomic, strong) UIButton *decalBtn; //贴纸 22 @property (nonatomic, strong) UIButton *decalBtn; //贴纸
22 @property (nonatomic, strong) UIButton *textDecalBtn; //字幕 23 @property (nonatomic, strong) UIButton *textDecalBtn; //字幕
23 24
24 -@property (nonatomic, strong) LVCAECommonView *bgmView; 25 +@property (nonatomic, strong) LVCBgmView *bgmView;
25 @property (nonatomic, strong) LVCAECommonView *aeView; 26 @property (nonatomic, strong) LVCAECommonView *aeView;
26 @property (nonatomic, strong) LVCAECommonView *reverbView; 27 @property (nonatomic, strong) LVCAECommonView *reverbView;
27 @property (nonatomic, strong) LVCAECommonView *decalView; 28 @property (nonatomic, strong) LVCAECommonView *decalView;
@@ -36,27 +37,42 @@ @@ -36,27 +37,42 @@
36 self = [super initWithFrame:frame]; 37 self = [super initWithFrame:frame];
37 if (self) { 38 if (self) {
38 self.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1.0]; 39 self.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1.0];
  40 +
  41 + NSString* plistfile1 = [[NSBundle mainBundle]pathForResource:@"ShortVideoData" ofType:@"plist"];
  42 + _dataArray = [[NSArray alloc] initWithContentsOfFile:plistfile1];
  43 +
39 [self addSubview:self.bgmBtn]; 44 [self addSubview:self.bgmBtn];
40 [self addSubview:self.aeBtn]; 45 [self addSubview:self.aeBtn];
41 [self addSubview:self.reverbBtn]; 46 [self addSubview:self.reverbBtn];
42 [self addSubview:self.decalBtn]; 47 [self addSubview:self.decalBtn];
43 [self addSubview:self.textDecalBtn]; 48 [self addSubview:self.textDecalBtn];
  49 + [self addSubview:self.bgmView];
44 50
45 - _dataArray = [[NSMutableArray alloc] init];  
46 - NSString* plistfile1 = [[NSBundle mainBundle]pathForResource:@"ShortVideoData" ofType:@"plist"];  
47 - NSArray *dataArr = [[NSArray alloc] initWithContentsOfFile:plistfile1];  
48 - //打印出字典里的数据  
49 -// NSLog(@"%@",dataArr);  
50 - for (NSDictionary *dic in dataArr) {  
51 - AEModelTemplate *model = [AEModelTemplate mj_objectWithKeyValues:dic];  
52 - [_dataArray addObject:model];  
53 - }  
54 -  
55 - NSLog(@"-------%@", _dataArray);  
56 } 51 }
57 return self; 52 return self;
58 } 53 }
59 54
  55 +#pragma mark -
  56 +#pragma mark - setter
  57 +- (void)setBgmBlock:(void (^)(AEModelTemplate *))BgmBlock
  58 +{
  59 + self.bgmView.bgmView.FuncBlock = BgmBlock;
  60 +}
  61 +
  62 +- (void)setBgmVolumeBlock:(void (^)(float, float))BgmVolumeBlock
  63 +{
  64 + self.bgmView.BgmVolumeBlock = BgmVolumeBlock;
  65 +}
  66 +
  67 +- (void)setAEBlock:(void (^)(AEModelTemplate *))AEBlock {
  68 + self.aeView.FuncBlock = AEBlock;
  69 +}
  70 +
  71 +- (void)setDEBlock:(void (^)(AEModelTemplate *))DEBlock {
  72 + self.decalView.FuncBlock = DEBlock;
  73 + self.textDecalView.FuncBlock = DEBlock;
  74 +}
  75 +
60 - (void)onSelectBgm:(id)sender 76 - (void)onSelectBgm:(id)sender
61 { 77 {
62 self.aeBtn.selected = NO; 78 self.aeBtn.selected = NO;
@@ -64,43 +80,80 @@ @@ -64,43 +80,80 @@
64 self.reverbBtn.selected = NO; 80 self.reverbBtn.selected = NO;
65 self.decalBtn.selected = NO; 81 self.decalBtn.selected = NO;
66 self.textDecalBtn.selected = NO; 82 self.textDecalBtn.selected = NO;
67 - 83 +
  84 + self.bgmView.hidden = NO;
  85 + self.aeView.hidden = YES;
  86 + self.reverbView.hidden = YES;
  87 + self.decalView.hidden = YES;
  88 + self.textDecalView.hidden = YES;
68 } 89 }
69 90
70 - (void)onSelectAe:(id)sender 91 - (void)onSelectAe:(id)sender
71 { 92 {
  93 + [self addSubview:self.aeView];
  94 +
72 self.aeBtn.selected = YES; 95 self.aeBtn.selected = YES;
73 self.bgmBtn.selected = NO; 96 self.bgmBtn.selected = NO;
74 self.reverbBtn.selected = NO; 97 self.reverbBtn.selected = NO;
75 self.decalBtn.selected = NO; 98 self.decalBtn.selected = NO;
  99 +
  100 + self.bgmView.hidden = YES;
  101 + self.aeView.hidden = NO;
  102 + self.reverbView.hidden = YES;
  103 + self.decalView.hidden = YES;
  104 + self.textDecalView.hidden = YES;
76 } 105 }
77 106
78 - (void)onSelectReverb:(id)sender 107 - (void)onSelectReverb:(id)sender
79 { 108 {
  109 + [self addSubview:self.reverbView];
  110 +
80 self.reverbBtn.selected = YES; 111 self.reverbBtn.selected = YES;
81 self.aeBtn.selected = NO; 112 self.aeBtn.selected = NO;
82 self.bgmBtn.selected = NO; 113 self.bgmBtn.selected = NO;
83 self.decalBtn.selected = NO; 114 self.decalBtn.selected = NO;
84 self.textDecalBtn.selected = NO; 115 self.textDecalBtn.selected = NO;
  116 +
  117 + self.bgmView.hidden = YES;
  118 + self.aeView.hidden = YES;
  119 + self.reverbView.hidden = NO;
  120 + self.decalView.hidden = YES;
  121 + self.textDecalView.hidden = YES;
85 122
86 } 123 }
87 124
88 -- (void)onSelectDecel:(id)sender{ 125 +- (void)onSelectDecel:(id)sender
  126 +{
  127 + [self addSubview:self.decalView];
  128 +
89 self.reverbBtn.selected = NO; 129 self.reverbBtn.selected = NO;
90 self.aeBtn.selected = NO; 130 self.aeBtn.selected = NO;
91 self.bgmBtn.selected = NO; 131 self.bgmBtn.selected = NO;
92 self.decalBtn.selected = YES; 132 self.decalBtn.selected = YES;
93 self.textDecalBtn.selected = NO; 133 self.textDecalBtn.selected = NO;
94 134
  135 + self.bgmView.hidden = YES;
  136 + self.aeView.hidden = YES;
  137 + self.reverbView.hidden = YES;
  138 + self.decalView.hidden = NO;
  139 + self.textDecalView.hidden = YES;
95 } 140 }
96 141
97 -- (void)onSelectTextDecal:(UIButton *)btn{ 142 +- (void)onSelectTextDecal:(UIButton *)btn
  143 +{
  144 + [self addSubview:self.textDecalView];
  145 +
98 self.reverbBtn.selected = NO; 146 self.reverbBtn.selected = NO;
99 self.aeBtn.selected = NO; 147 self.aeBtn.selected = NO;
100 self.bgmBtn.selected = NO; 148 self.bgmBtn.selected = NO;
101 self.decalBtn.selected = NO; 149 self.decalBtn.selected = NO;
102 self.textDecalBtn.selected = YES; 150 self.textDecalBtn.selected = YES;
103 151
  152 + self.bgmView.hidden = YES;
  153 + self.aeView.hidden = YES;
  154 + self.reverbView.hidden = YES;
  155 + self.decalView.hidden = YES;
  156 + self.textDecalView.hidden = NO;
104 } 157 }
105 158
106 #pragma mark - 159 #pragma mark -
@@ -178,19 +231,19 @@ @@ -178,19 +231,19 @@
178 return _textDecalBtn; 231 return _textDecalBtn;
179 } 232 }
180 233
181 -//- (BgmSelectorView *)bgmView  
182 -//{  
183 -// if (!_bgmView){  
184 -// _bgmView = [[BgmSelectorView alloc] initWithFrame:CGRectMake(0, 30, KScreenWidth, 172)];  
185 -// }  
186 -// return _bgmView;  
187 -//} 234 +- (LVCBgmView *)bgmView
  235 +{
  236 + if (!_bgmView){
  237 + _bgmView = [[LVCBgmView alloc] initWithFrame:CGRectMake(0, 30, KScreenWidth, 172) type:CNLiveSelectorType_BGM data:_dataArray[4]];
  238 + }
  239 + return _bgmView;
  240 +}
188 241
189 242
190 - (LVCAECommonView *)aeView 243 - (LVCAECommonView *)aeView
191 { 244 {
192 if (!_aeView){ 245 if (!_aeView){
193 - _aeView = [[LVCAECommonView alloc] initWithFrame:CGRectMake(0, 40, KScreenWidth, 172) type:CNLiveSelectorType_AE data:@[]]; 246 + _aeView = [[LVCAECommonView alloc] initWithFrame:CGRectMake(0, 40, KScreenWidth, 172) type:CNLiveSelectorType_AE data:_dataArray[2]];
194 _aeView.frame = CGRectMake(0, 40, KScreenWidth, 172); 247 _aeView.frame = CGRectMake(0, 40, KScreenWidth, 172);
195 } 248 }
196 return _aeView; 249 return _aeView;
@@ -199,7 +252,7 @@ @@ -199,7 +252,7 @@
199 - (LVCAECommonView *)reverbView 252 - (LVCAECommonView *)reverbView
200 { 253 {
201 if (!_reverbView){ 254 if (!_reverbView){
202 - _reverbView = [[LVCAECommonView alloc] initWithFrame:CGRectMake(0, 40, KScreenWidth, 172) type:CNLiveSelectorType_Reverb data:@[]]; 255 + _reverbView = [[LVCAECommonView alloc] initWithFrame:CGRectMake(0, 40, KScreenWidth, 172) type:CNLiveSelectorType_Reverb data:_dataArray[3]];
203 } 256 }
204 return _reverbView; 257 return _reverbView;
205 } 258 }
@@ -207,7 +260,7 @@ @@ -207,7 +260,7 @@
207 - (LVCAECommonView *)decalView 260 - (LVCAECommonView *)decalView
208 { 261 {
209 if (!_decalView){ 262 if (!_decalView){
210 - _decalView = [[LVCAECommonView alloc] initWithFrame:CGRectMake(0, 40, KScreenWidth, 172) type:CNLiveSelectorType_Decal data:@[]]; 263 + _decalView = [[LVCAECommonView alloc] initWithFrame:CGRectMake(0, 40, KScreenWidth, 172) type:CNLiveSelectorType_Decal data:_dataArray[1]];
211 } 264 }
212 return _decalView; 265 return _decalView;
213 } 266 }
@@ -215,7 +268,7 @@ @@ -215,7 +268,7 @@
215 - (LVCAECommonView *)textDecalView 268 - (LVCAECommonView *)textDecalView
216 { 269 {
217 if (!_textDecalView){ 270 if (!_textDecalView){
218 - _textDecalView = [[LVCAECommonView alloc] initWithFrame:CGRectMake(0, 40, KScreenWidth, 172) type:CNLiveSelectorType_TextDecal data:@[]]; 271 + _textDecalView = [[LVCAECommonView alloc] initWithFrame:CGRectMake(0, 40, KScreenWidth, 172) type:CNLiveSelectorType_TextDecal data:_dataArray[0]];
219 } 272 }
220 return _textDecalView; 273 return _textDecalView;
221 } 274 }
LiveVideoCloud/Classes/Sections/Mine/Views/LVCBgmView.h 0 → 100644
  1 +//
  2 +// LVCBgmView.h
  3 +// LiveVideoCloud
  4 +//
  5 +// Created by iOS on 2017/7/10.
  6 +// Copyright © 2017年 cnlive. All rights reserved.
  7 +//
  8 +
  9 +#import <UIKit/UIKit.h>
  10 +#import "LVCAECommonView.h"
  11 +
  12 +@interface LVCBgmView : UIView
  13 +
  14 +@property (nonatomic, strong) LVCAECommonView *bgmView;
  15 +@property (nonatomic, copy) void(^BgmVolumeBlock)(float origin, float dub);
  16 +
  17 +- (instancetype)initWithFrame:(CGRect)frame type:(NSUInteger)type data:(NSArray *)dataSource;
  18 +
  19 +@end
LiveVideoCloud/Classes/Sections/Mine/Views/LVCBgmView.m 0 → 100644
  1 +//
  2 +// LVCBgmView.m
  3 +// LiveVideoCloud
  4 +//
  5 +// Created by iOS on 2017/7/10.
  6 +// Copyright © 2017年 cnlive. All rights reserved.
  7 +//
  8 +
  9 +#import "LVCBgmView.h"
  10 +#import "LVCAERootView.h"
  11 +
  12 +@interface LVCBgmView ()
  13 +{
  14 + NSArray *_bgmArr;
  15 +}
  16 +
  17 +@property (nonatomic, strong) UISlider *originVolumeSlider;
  18 +@property (nonatomic, strong) UISlider *dubVolumeSlider;
  19 +
  20 +@end
  21 +
  22 +@implementation LVCBgmView
  23 +
  24 +- (instancetype)initWithFrame:(CGRect)frame type:(NSUInteger)type data:(NSArray *)dataSource
  25 +{
  26 + self = [super initWithFrame:frame];
  27 + if (self) {
  28 + _bgmArr = dataSource;
  29 +
  30 + [self addSubview:self.bgmView];
  31 + [self addSubview:self.originVolumeSlider];
  32 + [self addSubview:self.dubVolumeSlider];
  33 + }
  34 + return self;
  35 +}
  36 +
  37 +#pragma mark -
  38 +#pragma mark - Action
  39 +- (void)sliderValueChanged:(UISlider *)slider
  40 +{
  41 + if (self.BgmVolumeBlock){
  42 + self.BgmVolumeBlock(self.originVolumeSlider.value, self.dubVolumeSlider.value);
  43 + }
  44 +}
  45 +
  46 +#pragma mark -
  47 +#pragma mark - getter
  48 +- (LVCAECommonView *)bgmView
  49 +{
  50 + if (!_bgmView) {
  51 + _bgmView = [[LVCAECommonView alloc] initWithFrame:self.bounds type:CNLiveSelectorType_BGM data:_bgmArr];
  52 + }
  53 + return _bgmView;
  54 +}
  55 +
  56 +- (UISlider *)originVolumeSlider
  57 +{
  58 + if (!_originVolumeSlider){
  59 + _originVolumeSlider = [self createSlider:@"原声"];
  60 + _originVolumeSlider.frame = CGRectMake(60, self.bounds.size.height-50, self.bounds.size.width-60-24, 20);
  61 + _originVolumeSlider.tag = 0;
  62 + }
  63 + return _originVolumeSlider;
  64 +
  65 +}
  66 +
  67 +- (UISlider *)dubVolumeSlider
  68 +{
  69 + if (!_dubVolumeSlider){
  70 + _dubVolumeSlider = [self createSlider:@"配音"];
  71 + _dubVolumeSlider.frame = CGRectMake(60, self.bounds.size.height-20, self.bounds.size.width-60-24, 20);
  72 + _dubVolumeSlider.tag = 1;
  73 + _dubVolumeSlider.enabled = NO;
  74 + }
  75 + return _dubVolumeSlider;
  76 +}
  77 +
  78 +- (UISlider *)createSlider:(NSString *)title
  79 +{
  80 + UISlider *slider = [[UISlider alloc] init];
  81 + slider.minimumValue = 0;
  82 + slider.maximumValue = 1;
  83 +
  84 + slider.thumbTintColor = [UIColor colorWithHexString:@"#ff2c53"];
  85 + slider.maximumTrackTintColor = [UIColor colorWithHexString:@"#999999"];
  86 + slider.minimumTrackTintColor = [UIColor colorWithHexString:@"#ff2c53"];
  87 + [slider setThumbImage:[UIImage imageNamed:@"thumb"] forState:UIControlStateNormal];
  88 + [slider setThumbImage:[UIImage imageNamed:@"thumb"] forState:UIControlStateHighlighted];
  89 + [slider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
  90 +
  91 + UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(-35, 4, 30, 20)];
  92 + label.font = [UIFont systemFontOfSize:14];
  93 + label.text = title;
  94 + label.textColor = [UIColor colorWithHexString:@"#999999"];
  95 + [label sizeToFit];
  96 +
  97 + [slider addSubview:label];
  98 +
  99 + return slider;
  100 +}
  101 +
  102 +
  103 +/*
  104 +// Only override drawRect: if you perform custom drawing.
  105 +// An empty implementation adversely affects performance during animation.
  106 +- (void)drawRect:(CGRect)rect {
  107 + // Drawing code
  108 +}
  109 +*/
  110 +
  111 +@end
LiveVideoCloud/Classes/Sections/Mine/Views/LVCPreviewView.h
@@ -33,7 +33,7 @@ typedef NS_ENUM(NSUInteger, PreViewSubViewIdx){ @@ -33,7 +33,7 @@ typedef NS_ENUM(NSUInteger, PreViewSubViewIdx){
33 @property (nonatomic, strong) UIButton *recordBtn; //录制 33 @property (nonatomic, strong) UIButton *recordBtn; //录制
34 @property (nonatomic, strong) LVCVideoMgrButton *effectsBtn; //动态贴纸 34 @property (nonatomic, strong) LVCVideoMgrButton *effectsBtn; //动态贴纸
35 @property (nonatomic, strong) UILabel *recordTimeLabel; //时间 35 @property (nonatomic, strong) UILabel *recordTimeLabel; //时间
36 -@property (nonatomic, strong) UIButton *nextBtn; //next 36 +@property (nonatomic, strong) LVCVideoMgrButton *nextBtn; //next
37 @property (nonatomic, strong) UIButton *funcBtn; //更多功能 37 @property (nonatomic, strong) UIButton *funcBtn; //更多功能
38 @property (nonatomic, strong) UIButton *localBtn; //更多功能 38 @property (nonatomic, strong) UIButton *localBtn; //更多功能
39 @property (nonatomic, strong) UIView *previewView; 39 @property (nonatomic, strong) UIView *previewView;
LiveVideoCloud/Classes/Sections/Mine/Views/LVCPreviewView.m
@@ -108,14 +108,12 @@ @@ -108,14 +108,12 @@
108 return _funcBtn; 108 return _funcBtn;
109 } 109 }
110 110
111 -- (UIButton *)nextBtn 111 +- (LVCVideoMgrButton *)nextBtn
112 { 112 {
113 if (!_nextBtn){ 113 if (!_nextBtn){
114 - _nextBtn = [UIButton buttonWithType:UIButtonTypeCustom];  
115 - _nextBtn.frame = CGRectMake(KScreenWidth-BOTTOM_ICON_WIDTH-50, KScreenHeight-BOTTOM_ICON_WIDTH-50, BOTTOM_ICON_WIDTH, BOTTOM_ICON_WIDTH);  
116 - _nextBtn.tag = PreViewSubViewIdx_Next; 114 + _nextBtn = [[LVCVideoMgrButton alloc] initWithFrame:CGRectMake(KScreenWidth-BOTTOM_ICON_WIDTH-50, KScreenHeight-BOTTOM_ICON_WIDTH-50, BOTTOM_ICON_WIDTH, BOTTOM_ICON_WIDTH) left:NO];
  115 + _nextBtn.videoMgrState = kLocalSelect;
117 [_nextBtn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside]; 116 [_nextBtn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside];
118 - [_nextBtn setImage:[UIImage imageNamed:@"对勾 (2)"] forState:UIControlStateNormal];  
119 } 117 }
120 return _nextBtn; 118 return _nextBtn;
121 } 119 }
@@ -137,7 +135,7 @@ @@ -137,7 +135,7 @@
137 - (LVCVideoMgrButton *)effectsBtn 135 - (LVCVideoMgrButton *)effectsBtn
138 { 136 {
139 if (!_effectsBtn){ 137 if (!_effectsBtn){
140 - _effectsBtn = [[LVCVideoMgrButton alloc] initWithFrame:CGRectMake(50, KScreenHeight-BOTTOM_ICON_WIDTH-50, BOTTOM_ICON_WIDTH, BOTTOM_ICON_WIDTH)]; 138 + _effectsBtn = [[LVCVideoMgrButton alloc] initWithFrame:CGRectMake(50, KScreenHeight-BOTTOM_ICON_WIDTH-50, BOTTOM_ICON_WIDTH, BOTTOM_ICON_WIDTH) left:YES];
141 _effectsBtn.videoMgrState = kEffectsState; 139 _effectsBtn.videoMgrState = kEffectsState;
142 [_effectsBtn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside]; 140 [_effectsBtn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside];
143 } 141 }
LiveVideoCloud/Classes/Sections/Mine/Views/LVCVideoMgrButton.h
@@ -12,11 +12,14 @@ enum { @@ -12,11 +12,14 @@ enum {
12 kEffectsState = (1 << 16), //导入视频状态 12 kEffectsState = (1 << 16), //导入视频状态
13 kDeleteState = (1 << 17), //删除状态 13 kDeleteState = (1 << 17), //删除状态
14 kBackSelect = (1 << 18), //回退状态(回退->删除->导入) 14 kBackSelect = (1 << 18), //回退状态(回退->删除->导入)
  15 + kLocalSelect = (1 << 19),
  16 + kNextSelect = (1 << 20),
15 }; 17 };
16 18
17 @interface LVCVideoMgrButton : UIButton 19 @interface LVCVideoMgrButton : UIButton
18 20
19 @property (nonatomic, assign) NSUInteger videoMgrState; 21 @property (nonatomic, assign) NSUInteger videoMgrState;
20 22
  23 +- (instancetype)initWithFrame:(CGRect)frame left:(BOOL)left;
21 24
22 @end 25 @end
LiveVideoCloud/Classes/Sections/Mine/Views/LVCVideoMgrButton.m
@@ -11,22 +11,31 @@ @@ -11,22 +11,31 @@
11 11
12 @implementation LVCVideoMgrButton 12 @implementation LVCVideoMgrButton
13 13
14 -- (instancetype)initWithFrame:(CGRect)frame 14 +- (instancetype)initWithFrame:(CGRect)frame left:(BOOL)left
15 { 15 {
16 self = [super initWithFrame:frame]; 16 self = [super initWithFrame:frame];
17 if (self){ 17 if (self){
18 18
19 self.backgroundColor = [UIColor blackColor]; 19 self.backgroundColor = [UIColor blackColor];
20 20
21 - [self setImage:[UIImage imageNamed:@"美颜设置-角色"] forState:kEffectsState];  
22 - [self setImage:[UIImage imageNamed:@"美颜设置-角色"] forState:(kEffectsState | UIControlStateHighlighted )];  
23 - [self setImage:[UIImage imageNamed:@"美颜设置-角色"] forState:(kEffectsState | UIControlStateDisabled )];  
24 - [self setImage:[UIImage imageNamed:@"delete"] forState:kDeleteState];  
25 - [self setImage:[UIImage imageNamed:@"delete"] forState:(kDeleteState | UIControlStateHighlighted)];  
26 - [self setImage:[UIImage imageNamed:@"delete"] forState:(kDeleteState | UIControlStateDisabled )];  
27 - [self setImage:[UIImage imageNamed:@"revoke"] forState:kBackSelect];  
28 - [self setImage:[UIImage imageNamed:@"revoke"] forState:(kBackSelect | UIControlStateHighlighted)];  
29 - [self setImage:[UIImage imageNamed:@"revoke"] forState:(kBackSelect | UIControlStateDisabled )]; 21 + if (left) {
  22 + [self setImage:[UIImage imageNamed:@"美颜设置-角色"] forState:kEffectsState];
  23 + [self setImage:[UIImage imageNamed:@"美颜设置-角色"] forState:(kEffectsState | UIControlStateHighlighted )];
  24 + [self setImage:[UIImage imageNamed:@"美颜设置-角色"] forState:(kEffectsState | UIControlStateDisabled )];
  25 + [self setImage:[UIImage imageNamed:@"delete"] forState:kDeleteState];
  26 + [self setImage:[UIImage imageNamed:@"delete"] forState:(kDeleteState | UIControlStateHighlighted)];
  27 + [self setImage:[UIImage imageNamed:@"delete"] forState:(kDeleteState | UIControlStateDisabled )];
  28 + [self setImage:[UIImage imageNamed:@"revoke"] forState:kBackSelect];
  29 + [self setImage:[UIImage imageNamed:@"revoke"] forState:(kBackSelect | UIControlStateHighlighted)];
  30 + [self setImage:[UIImage imageNamed:@"revoke"] forState:(kBackSelect | UIControlStateDisabled )];
  31 + } else {
  32 + [self setImage:[UIImage imageNamed:@"相册"] forState:kLocalSelect];
  33 + [self setImage:[UIImage imageNamed:@"相册"] forState:(kLocalSelect | UIControlStateHighlighted )];
  34 + [self setImage:[UIImage imageNamed:@"相册"] forState:(kLocalSelect | UIControlStateDisabled )];
  35 + [self setImage:[UIImage imageNamed:@"对勾 (2)"] forState:kNextSelect];
  36 + [self setImage:[UIImage imageNamed:@"对勾 (2)"] forState:(kNextSelect | UIControlStateHighlighted)];
  37 + [self setImage:[UIImage imageNamed:@"对勾 (2)"] forState:(kNextSelect | UIControlStateDisabled )];
  38 + }
30 39
31 } 40 }
32 return self; 41 return self;
@@ -36,11 +45,16 @@ @@ -36,11 +45,16 @@
36 { 45 {
37 if (videoMgrState == kEffectsState){ 46 if (videoMgrState == kEffectsState){
38 self.tag = PreViewSubViewIdx_Effects; 47 self.tag = PreViewSubViewIdx_Effects;
39 - }else if (videoMgrState == kDeleteState){ 48 + } else if (videoMgrState == kDeleteState){
40 self.tag = PreViewSubViewIdx_Delete; 49 self.tag = PreViewSubViewIdx_Delete;
41 - }else if (videoMgrState == kBackSelect){ 50 + } else if (videoMgrState == kBackSelect){
42 self.tag = PreViewSubViewIdx_Revoke; 51 self.tag = PreViewSubViewIdx_Revoke;
  52 + } else if (videoMgrState == kLocalSelect) {
  53 + self.tag = PreViewSubViewIdx_LocalVideo;
  54 + } else if (videoMgrState == kNextSelect) {
  55 + self.tag = PreViewSubViewIdx_Next;
43 } 56 }
  57 +
44 _videoMgrState = videoMgrState; 58 _videoMgrState = videoMgrState;
45 59
46 [self setNeedsLayout]; 60 [self setNeedsLayout];
LiveVideoCloud/ShortVideoData.plist
@@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
57 <array> 57 <array>
58 <dict> 58 <dict>
59 <key>image</key> 59 <key>image</key>
60 - <string>decal_0_icon</string> 60 + <string>decal_0</string>
61 <key>txt</key> 61 <key>txt</key>
62 <string>nil</string> 62 <string>nil</string>
63 <key>idx</key> 63 <key>idx</key>
@@ -67,7 +67,7 @@ @@ -67,7 +67,7 @@
67 </dict> 67 </dict>
68 <dict> 68 <dict>
69 <key>image</key> 69 <key>image</key>
70 - <string>decal_1_icon</string> 70 + <string>decal_1</string>
71 <key>txt</key> 71 <key>txt</key>
72 <string>nil</string> 72 <string>nil</string>
73 <key>idx</key> 73 <key>idx</key>
@@ -77,7 +77,7 @@ @@ -77,7 +77,7 @@
77 </dict> 77 </dict>
78 <dict> 78 <dict>
79 <key>image</key> 79 <key>image</key>
80 - <string>decal_2_icon</string> 80 + <string>decal_2</string>
81 <key>txt</key> 81 <key>txt</key>
82 <string>nil</string> 82 <string>nil</string>
83 <key>idx</key> 83 <key>idx</key>
@@ -87,7 +87,7 @@ @@ -87,7 +87,7 @@
87 </dict> 87 </dict>
88 <dict> 88 <dict>
89 <key>image</key> 89 <key>image</key>
90 - <string>decal_3_icon</string> 90 + <string>decal_3</string>
91 <key>txt</key> 91 <key>txt</key>
92 <string>nil</string> 92 <string>nil</string>
93 <key>idx</key> 93 <key>idx</key>
@@ -97,7 +97,7 @@ @@ -97,7 +97,7 @@
97 </dict> 97 </dict>
98 <dict> 98 <dict>
99 <key>image</key> 99 <key>image</key>
100 - <string>decal_4_icon</string> 100 + <string>decal_4</string>
101 <key>txt</key> 101 <key>txt</key>
102 <string>nil</string> 102 <string>nil</string>
103 <key>idx</key> 103 <key>idx</key>
@@ -107,7 +107,7 @@ @@ -107,7 +107,7 @@
107 </dict> 107 </dict>
108 <dict> 108 <dict>
109 <key>image</key> 109 <key>image</key>
110 - <string>decal_5_icon</string> 110 + <string>decal_5</string>
111 <key>txt</key> 111 <key>txt</key>
112 <string>nil</string> 112 <string>nil</string>
113 <key>idx</key> 113 <key>idx</key>
@@ -117,7 +117,7 @@ @@ -117,7 +117,7 @@
117 </dict> 117 </dict>
118 <dict> 118 <dict>
119 <key>image</key> 119 <key>image</key>
120 - <string>decal_6_icon</string> 120 + <string>decal_6</string>
121 <key>txt</key> 121 <key>txt</key>
122 <string>nil</string> 122 <string>nil</string>
123 <key>idx</key> 123 <key>idx</key>
@@ -127,7 +127,7 @@ @@ -127,7 +127,7 @@
127 </dict> 127 </dict>
128 <dict> 128 <dict>
129 <key>image</key> 129 <key>image</key>
130 - <string>decal_7_icon</string> 130 + <string>decal_7</string>
131 <key>txt</key> 131 <key>txt</key>
132 <string>nil</string> 132 <string>nil</string>
133 <key>idx</key> 133 <key>idx</key>
LiveVideoCloud/animation.xcassets/ShortVideo/ae/Contents.json 0 → 100644
  1 +{
  2 + "info" : {
  3 + "version" : 1,
  4 + "author" : "xcode"
  5 + }
  6 +}
0 \ No newline at end of file 7 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/Frozen.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "Frozen.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/Frozen.imageset/Frozen.png 0 → 100644

217 KB

LiveVideoCloud/animation.xcassets/ShortVideo/ae/See You Again.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "See You Again.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/See You Again.imageset/See You Again.png 0 → 100644

243 KB

LiveVideoCloud/animation.xcassets/ShortVideo/ae/Stay.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "Stay.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/Stay.imageset/Stay.png 0 → 100644

86.9 KB

LiveVideoCloud/animation.xcassets/ShortVideo/ae/closeef.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "关闭效果@2x.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "filename" : "关闭效果@3x.png",
  11 + "scale" : "2x"
  12 + },
  13 + {
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "version" : 1,
  20 + "author" : "xcode"
  21 + }
  22 +}
0 \ No newline at end of file 23 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/closeef.imageset/关闭效果@2x.png 0 → 100644

2.36 KB

LiveVideoCloud/animation.xcassets/ShortVideo/ae/closeef.imageset/关闭效果@3x.png 0 → 100644

4.18 KB

LiveVideoCloud/animation.xcassets/ShortVideo/ae/concert.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "concert.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/concert.imageset/concert.png 0 → 100644

58.9 KB

LiveVideoCloud/animation.xcassets/ShortVideo/ae/ktv.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "ktv.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/ktv.imageset/ktv.png 0 → 100644

42.1 KB

LiveVideoCloud/animation.xcassets/ShortVideo/ae/man.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "man.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/man.imageset/man.png 0 → 100644

30.4 KB

LiveVideoCloud/animation.xcassets/ShortVideo/ae/robot.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "robot.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/robot.imageset/robot.png 0 → 100644

62.6 KB

LiveVideoCloud/animation.xcassets/ShortVideo/ae/solemn.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "solemn.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/solemn.imageset/solemn.png 0 → 100644

37.1 KB

LiveVideoCloud/animation.xcassets/ShortVideo/ae/studio.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "studio.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/studio.imageset/studio.png 0 → 100644

26 KB

LiveVideoCloud/animation.xcassets/ShortVideo/ae/woman.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "woman.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/woman.imageset/woman.png 0 → 100644

53.4 KB

LiveVideoCloud/animation.xcassets/ShortVideo/ae/woodwing.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "woodwing.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/ae/woodwing.imageset/woodwing.png 0 → 100644

40.5 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/Contents.json 0 → 100644
  1 +{
  2 + "info" : {
  3 + "version" : 1,
  4 + "author" : "xcode"
  5 + }
  6 +}
0 \ No newline at end of file 7 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_0.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_0.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_0.imageset/decal_0.png 0 → 100644

88.1 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_1.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_1.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_1.imageset/decal_1.png 0 → 100644

107 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_2.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_2.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_2.imageset/decal_2.png 0 → 100644

119 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_3.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_3.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_3.imageset/decal_3.png 0 → 100644

68.9 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_4.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_4.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_4.imageset/decal_4.png 0 → 100644

37 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_5.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_5.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_5.imageset/decal_5.png 0 → 100644

40.1 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_6.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_6.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_6.imageset/decal_6.png 0 → 100644

33.4 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_7.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_7.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_7.imageset/decal_7.png 0 → 100644

26.1 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_t_0.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_t_0.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_t_0.imageset/decal_t_0.png 0 → 100644

37.6 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_t_1.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_t_1.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_t_1.imageset/decal_t_1.png 0 → 100644

42.8 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_t_2.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_t_2.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_t_2.imageset/decal_t_2.png 0 → 100644

25.6 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_t_3.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_t_3.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_t_3.imageset/decal_t_3.png 0 → 100644

33.1 KB

LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_t_4.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "decal_t_4.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/decals/decal_t_4.imageset/decal_t_4.png 0 → 100644

26.6 KB

LiveVideoCloud/animation.xcassets/ShortVideo/thumb.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "thumb@2x.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/animation.xcassets/ShortVideo/thumb.imageset/thumb@2x.png 0 → 100644

487 Bytes