Commit 392d034eb9ac0fb0e07848b405f1ffdda4862a65
1 parent
d1054ec8
添加短视频入口
Showing
63 changed files
with
1769 additions
and
20 deletions
LiveVideoCloud.xcodeproj/project.pbxproj
| ... | ... | @@ -75,6 +75,14 @@ |
| 75 | 75 | 810B65061E779B1F00133E15 /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 810B64FA1E779B1F00133E15 /* View+MASAdditions.m */; }; |
| 76 | 76 | 810B65071E779B1F00133E15 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 810B64FD1E779B1F00133E15 /* ViewController+MASAdditions.m */; }; |
| 77 | 77 | 811BB68E1E8116C8005C6291 /* NSString+StringSize.m in Sources */ = {isa = PBXBuildFile; fileRef = 811BB68D1E8116C8005C6291 /* NSString+StringSize.m */; }; |
| 78 | + 8156A7A91F0F5A1D007EE146 /* LVCShortVideoController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8156A7A81F0F5A1D007EE146 /* LVCShortVideoController.m */; }; | |
| 79 | + 8156A7AC1F0F5AC6007EE146 /* LVCPreviewView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8156A7AB1F0F5AC6007EE146 /* LVCPreviewView.m */; }; | |
| 80 | + 8156A7AF1F0F73F7007EE146 /* LVCVideoMgrButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 8156A7AE1F0F73F7007EE146 /* LVCVideoMgrButton.m */; }; | |
| 81 | + 8156A7B11F0F8390007EE146 /* ShortVideoData.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8156A7B01F0F8390007EE146 /* ShortVideoData.plist */; }; | |
| 82 | + 8156A7B41F0F8FCC007EE146 /* LVCAERootView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8156A7B31F0F8FCC007EE146 /* LVCAERootView.m */; }; | |
| 83 | + 8156A7B71F0F93AA007EE146 /* LVCAECommonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8156A7B61F0F93AA007EE146 /* LVCAECommonView.m */; }; | |
| 84 | + 8156A7BA1F0F9541007EE146 /* AECommonCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8156A7B91F0F9541007EE146 /* AECommonCell.m */; }; | |
| 85 | + 8156A7C01F0F9589007EE146 /* AEModelTemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8156A7BF1F0F9589007EE146 /* AEModelTemplate.m */; }; | |
| 78 | 86 | 8178D4241F02043500AA78A4 /* LVCFullScreenPlayerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D41F1F02043500AA78A4 /* LVCFullScreenPlayerController.m */; }; |
| 79 | 87 | 8178D4251F02043500AA78A4 /* LVCLivePlayerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D4211F02043500AA78A4 /* LVCLivePlayerController.m */; }; |
| 80 | 88 | 8178D4311F02044300AA78A4 /* LVCChatRoomModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D42C1F02044300AA78A4 /* LVCChatRoomModel.m */; }; |
| ... | ... | @@ -443,6 +451,21 @@ |
| 443 | 451 | 810B64FD1E779B1F00133E15 /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ViewController+MASAdditions.m"; sourceTree = "<group>"; }; |
| 444 | 452 | 811BB68C1E8116C8005C6291 /* NSString+StringSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+StringSize.h"; sourceTree = "<group>"; }; |
| 445 | 453 | 811BB68D1E8116C8005C6291 /* NSString+StringSize.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+StringSize.m"; sourceTree = "<group>"; }; |
| 454 | + 8156A7A71F0F5A1D007EE146 /* LVCShortVideoController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCShortVideoController.h; sourceTree = "<group>"; }; | |
| 455 | + 8156A7A81F0F5A1D007EE146 /* LVCShortVideoController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCShortVideoController.m; sourceTree = "<group>"; }; | |
| 456 | + 8156A7AA1F0F5AC6007EE146 /* LVCPreviewView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCPreviewView.h; sourceTree = "<group>"; }; | |
| 457 | + 8156A7AB1F0F5AC6007EE146 /* LVCPreviewView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCPreviewView.m; sourceTree = "<group>"; }; | |
| 458 | + 8156A7AD1F0F73F7007EE146 /* LVCVideoMgrButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCVideoMgrButton.h; sourceTree = "<group>"; }; | |
| 459 | + 8156A7AE1F0F73F7007EE146 /* LVCVideoMgrButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCVideoMgrButton.m; sourceTree = "<group>"; }; | |
| 460 | + 8156A7B01F0F8390007EE146 /* ShortVideoData.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = ShortVideoData.plist; sourceTree = "<group>"; }; | |
| 461 | + 8156A7B21F0F8FCC007EE146 /* LVCAERootView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCAERootView.h; sourceTree = "<group>"; }; | |
| 462 | + 8156A7B31F0F8FCC007EE146 /* LVCAERootView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCAERootView.m; sourceTree = "<group>"; }; | |
| 463 | + 8156A7B51F0F93AA007EE146 /* LVCAECommonView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCAECommonView.h; sourceTree = "<group>"; }; | |
| 464 | + 8156A7B61F0F93AA007EE146 /* LVCAECommonView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCAECommonView.m; sourceTree = "<group>"; }; | |
| 465 | + 8156A7B81F0F9541007EE146 /* AECommonCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AECommonCell.h; sourceTree = "<group>"; }; | |
| 466 | + 8156A7B91F0F9541007EE146 /* AECommonCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AECommonCell.m; sourceTree = "<group>"; }; | |
| 467 | + 8156A7BE1F0F9589007EE146 /* AEModelTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AEModelTemplate.h; sourceTree = "<group>"; }; | |
| 468 | + 8156A7BF1F0F9589007EE146 /* AEModelTemplate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AEModelTemplate.m; sourceTree = "<group>"; }; | |
| 446 | 469 | 8178D41E1F02043500AA78A4 /* LVCFullScreenPlayerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCFullScreenPlayerController.h; sourceTree = "<group>"; }; |
| 447 | 470 | 8178D41F1F02043500AA78A4 /* LVCFullScreenPlayerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCFullScreenPlayerController.m; sourceTree = "<group>"; }; |
| 448 | 471 | 8178D4201F02043500AA78A4 /* LVCLivePlayerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCLivePlayerController.h; sourceTree = "<group>"; }; |
| ... | ... | @@ -892,6 +915,8 @@ |
| 892 | 915 | D209AD6D1EC583B700D82E3B /* MineMessageController.m */, |
| 893 | 916 | D209AD6F1EC583D100D82E3B /* MineAccountController.h */, |
| 894 | 917 | D209AD701EC583D100D82E3B /* MineAccountController.m */, |
| 918 | + 8156A7A71F0F5A1D007EE146 /* LVCShortVideoController.h */, | |
| 919 | + 8156A7A81F0F5A1D007EE146 /* LVCShortVideoController.m */, | |
| 895 | 920 | ); |
| 896 | 921 | path = Controllers; |
| 897 | 922 | sourceTree = "<group>"; |
| ... | ... | @@ -937,6 +962,8 @@ |
| 937 | 962 | 4B45CE621EB86A590079AFB7 /* LVCMineCommonModel.m */, |
| 938 | 963 | 4B45CE631EB86A590079AFB7 /* LVCMineModel.h */, |
| 939 | 964 | 4B45CE641EB86A590079AFB7 /* LVCMineModel.m */, |
| 965 | + 8156A7BE1F0F9589007EE146 /* AEModelTemplate.h */, | |
| 966 | + 8156A7BF1F0F9589007EE146 /* AEModelTemplate.m */, | |
| 940 | 967 | ); |
| 941 | 968 | path = Model; |
| 942 | 969 | sourceTree = "<group>"; |
| ... | ... | @@ -960,6 +987,16 @@ |
| 960 | 987 | 4B45CE751EB86A590079AFB7 /* LVCTextField.m */, |
| 961 | 988 | 4B42A6C51EC0171800DA09D7 /* PlayRecordCell.h */, |
| 962 | 989 | 4B42A6C61EC0171800DA09D7 /* PlayRecordCell.m */, |
| 990 | + 8156A7AA1F0F5AC6007EE146 /* LVCPreviewView.h */, | |
| 991 | + 8156A7AB1F0F5AC6007EE146 /* LVCPreviewView.m */, | |
| 992 | + 8156A7AD1F0F73F7007EE146 /* LVCVideoMgrButton.h */, | |
| 993 | + 8156A7AE1F0F73F7007EE146 /* LVCVideoMgrButton.m */, | |
| 994 | + 8156A7B21F0F8FCC007EE146 /* LVCAERootView.h */, | |
| 995 | + 8156A7B31F0F8FCC007EE146 /* LVCAERootView.m */, | |
| 996 | + 8156A7B51F0F93AA007EE146 /* LVCAECommonView.h */, | |
| 997 | + 8156A7B61F0F93AA007EE146 /* LVCAECommonView.m */, | |
| 998 | + 8156A7B81F0F9541007EE146 /* AECommonCell.h */, | |
| 999 | + 8156A7B91F0F9541007EE146 /* AECommonCell.m */, | |
| 963 | 1000 | ); |
| 964 | 1001 | path = Views; |
| 965 | 1002 | sourceTree = "<group>"; |
| ... | ... | @@ -1241,6 +1278,7 @@ |
| 1241 | 1278 | D2029B921E6EAAA50027CD92 /* LaunchScreen.storyboard */, |
| 1242 | 1279 | D2029B851E6EAAA50027CD92 /* main.m */, |
| 1243 | 1280 | D2029B951E6EAAA50027CD92 /* Info.plist */, |
| 1281 | + 8156A7B01F0F8390007EE146 /* ShortVideoData.plist */, | |
| 1244 | 1282 | ); |
| 1245 | 1283 | name = "Supporting Files"; |
| 1246 | 1284 | sourceTree = "<group>"; |
| ... | ... | @@ -2225,6 +2263,7 @@ |
| 2225 | 2263 | buildActionMask = 2147483647; |
| 2226 | 2264 | files = ( |
| 2227 | 2265 | D2393D081F02505400D3EE17 /* TencentOpenApi_IOS_Bundle.bundle in Resources */, |
| 2266 | + 8156A7B11F0F8390007EE146 /* ShortVideoData.plist in Resources */, | |
| 2228 | 2267 | D2029C971E6EADE10027CD92 /* Info.plist in Resources */, |
| 2229 | 2268 | D2575C7F1E76A4F300E3A8FC /* NHPlaneViews.xib in Resources */, |
| 2230 | 2269 | D2393D0F1F0250A100D3EE17 /* read_me.txt in Resources */, |
| ... | ... | @@ -2267,10 +2306,12 @@ |
| 2267 | 2306 | files = ( |
| 2268 | 2307 | D2029CC31E6EADE10027CD92 /* UIImageView+HighlightedWebCache.m in Sources */, |
| 2269 | 2308 | D22830FF1E77C69E00627701 /* GiftListView.m in Sources */, |
| 2309 | + 8156A7B41F0F8FCC007EE146 /* LVCAERootView.m in Sources */, | |
| 2270 | 2310 | 4B45CE8A1EB86A590079AFB7 /* LVCPersonCommonCell.m in Sources */, |
| 2271 | 2311 | D2029CC01E6EADE10027CD92 /* UIImage+GIF.m in Sources */, |
| 2272 | 2312 | 4B45CE851EB86A590079AFB7 /* LVCClearCachesCell.m in Sources */, |
| 2273 | 2313 | 4B45CE9B1EB86A760079AFB7 /* ZXUIKit.m in Sources */, |
| 2314 | + 8156A7A91F0F5A1D007EE146 /* LVCShortVideoController.m in Sources */, | |
| 2274 | 2315 | D2029BCF1E6EADD70027CD92 /* ZXTabBarController.m in Sources */, |
| 2275 | 2316 | D2029CB81E6EADE10027CD92 /* SDImageCache.m in Sources */, |
| 2276 | 2317 | D2029CBB1E6EADE10027CD92 /* SDWebImageDownloader.m in Sources */, |
| ... | ... | @@ -2324,6 +2365,7 @@ |
| 2324 | 2365 | 810B65011E779B1F00133E15 /* MASLayoutConstraint.m in Sources */, |
| 2325 | 2366 | D2029CA11E6EADE10027CD92 /* NSString+MJExtension.m in Sources */, |
| 2326 | 2367 | 4B45CE7A1EB86A590079AFB7 /* MineLiveController.m in Sources */, |
| 2368 | + 8156A7AF1F0F73F7007EE146 /* LVCVideoMgrButton.m in Sources */, | |
| 2327 | 2369 | D2029BCB1E6EADD70027CD92 /* BaseTableViewCell.m in Sources */, |
| 2328 | 2370 | D2029CAA1E6EADE10027CD92 /* MJRefreshBackGifFooter.m in Sources */, |
| 2329 | 2371 | 8178D4531F02045500AA78A4 /* LVCRequestFailedView.m in Sources */, |
| ... | ... | @@ -2375,6 +2417,7 @@ |
| 2375 | 2417 | D2029C981E6EADE10027CD92 /* MJExtensionConst.m in Sources */, |
| 2376 | 2418 | 8178D4571F0204D600AA78A4 /* LVCTelevisioController.m in Sources */, |
| 2377 | 2419 | D2029CAE1E6EADE10027CD92 /* MJRefreshNormalHeader.m in Sources */, |
| 2420 | + 8156A7B71F0F93AA007EE146 /* LVCAECommonView.m in Sources */, | |
| 2378 | 2421 | D23696921E7FC83800E4BF71 /* chatMsgModel.m in Sources */, |
| 2379 | 2422 | 4BD856071EBACD530082061D /* UIImageView+AFNetworking.m in Sources */, |
| 2380 | 2423 | D2029CC61E6EADE10027CD92 /* SSKeychain.m in Sources */, |
| ... | ... | @@ -2416,6 +2459,7 @@ |
| 2416 | 2459 | D29D88481E88C53300543A03 /* LVCUGCLivePrepareView.m in Sources */, |
| 2417 | 2460 | D2029D091E6EAE2E0027CD92 /* Foundation+Log.m in Sources */, |
| 2418 | 2461 | 4B45CEAB1EB86BFA0079AFB7 /* NSString+ZXExtension.m in Sources */, |
| 2462 | + 8156A7BA1F0F9541007EE146 /* AECommonCell.m in Sources */, | |
| 2419 | 2463 | D2029BCA1E6EADD70027CD92 /* BaseModel.m in Sources */, |
| 2420 | 2464 | D25BF87B1E7B8A82007FB138 /* SliderView.m in Sources */, |
| 2421 | 2465 | 810B65041E779B1F00133E15 /* NSArray+MASAdditions.m in Sources */, |
| ... | ... | @@ -2429,6 +2473,7 @@ |
| 2429 | 2473 | D2029CA81E6EADE10027CD92 /* MJRefreshAutoNormalFooter.m in Sources */, |
| 2430 | 2474 | D2EBC8841F02109C00F198FB /* LVCUGCLivePlayerCell.m in Sources */, |
| 2431 | 2475 | 4B45CE991EB86A760079AFB7 /* UITextField+createTextField.m in Sources */, |
| 2476 | + 8156A7AC1F0F5AC6007EE146 /* LVCPreviewView.m in Sources */, | |
| 2432 | 2477 | 4B45CEA81EB86B9F0079AFB7 /* UserTools.m in Sources */, |
| 2433 | 2478 | D217A24A1E7B76C7003B44CB /* PresentView.m in Sources */, |
| 2434 | 2479 | D22830F11E778C0F00627701 /* LiveBaseView.m in Sources */, |
| ... | ... | @@ -2482,6 +2527,7 @@ |
| 2482 | 2527 | D25530061E7911A800DF38A5 /* GiftAnimationAction.m in Sources */, |
| 2483 | 2528 | 4B45CE881EB86A590079AFB7 /* LVCMineShowCell.m in Sources */, |
| 2484 | 2529 | D2029CD41E6EADE70027CD92 /* HttpService.m in Sources */, |
| 2530 | + 8156A7C01F0F9589007EE146 /* AEModelTemplate.m in Sources */, | |
| 2485 | 2531 | ); |
| 2486 | 2532 | runOnlyForDeploymentPostprocessing = 0; |
| 2487 | 2533 | }; | ... | ... |
LiveVideoCloud/AppDelegate/AppDelegate.m
| ... | ... | @@ -29,7 +29,7 @@ |
| 29 | 29 | [[CNLiveWebcastManager manager] initWithAppId:UserAppId appKey:UserAppKey isTestEnvironment:self.isTestEnvironment]; |
| 30 | 30 | |
| 31 | 31 | // 初始化评论功能 |
| 32 | - [[CNLiveCommentManager sharedCNLiveCommentManager] registerWithAppId:UserAppId appKey:UserAppKey isTestEnvironment:YES]; | |
| 32 | + [[CNLiveCommentManager sharedCNLiveCommentManager] registerWithAppId:UserAppId appKey:UserAppKey isTestEnvironment:self.isTestEnvironment]; | |
| 33 | 33 | |
| 34 | 34 | //初始化用户SDK |
| 35 | 35 | [CNLiveUserSystemCenter setAppId:UserAppId appKey:UserAppKey appSecret:UserAppSceret isTestEnvironment:self.isTestEnvironment]; | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Controllers/LVCMineViewController.m
| ... | ... | @@ -19,6 +19,7 @@ |
| 19 | 19 | #import "CNLiveWebView.h" |
| 20 | 20 | #import "MineAccountController.h" |
| 21 | 21 | #import "MineMessageController.h" |
| 22 | +#import "LVCShortVideoController.h" | |
| 22 | 23 | |
| 23 | 24 | @interface LVCMineViewController ()<UITableViewDelegate,UITableViewDataSource,changeBtnClickDelegate> |
| 24 | 25 | @property (nonatomic, strong) UITableView * tbv; |
| ... | ... | @@ -147,7 +148,7 @@ |
| 147 | 148 | { |
| 148 | 149 | if (!_localTitleArr) |
| 149 | 150 | { |
| 150 | - _localTitleArr = [[NSArray alloc] initWithObjects:@"设置", nil]; | |
| 151 | + _localTitleArr = [[NSArray alloc] initWithObjects:@"设置", @"短视频",nil]; | |
| 151 | 152 | } |
| 152 | 153 | return _localTitleArr; |
| 153 | 154 | } |
| ... | ... | @@ -155,7 +156,7 @@ |
| 155 | 156 | { |
| 156 | 157 | if (!_localImageArr) { |
| 157 | 158 | |
| 158 | - _localImageArr = [[NSArray alloc] initWithObjects:@"Settings", nil]; | |
| 159 | + _localImageArr = [[NSArray alloc] initWithObjects:@"Settings", @"Settings", nil]; | |
| 159 | 160 | } |
| 160 | 161 | return _localImageArr; |
| 161 | 162 | } |
| ... | ... | @@ -198,7 +199,13 @@ |
| 198 | 199 | } |
| 199 | 200 | -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath |
| 200 | 201 | { |
| 201 | - [self pushVC:[MineSettingViewController new]]; | |
| 202 | + | |
| 203 | + if (indexPath.row == 0) { | |
| 204 | + [self pushVC:[MineSettingViewController new]]; | |
| 205 | + } else if (indexPath.row == 1) { | |
| 206 | + LVCShortVideoController *shortVideoVC = [[LVCShortVideoController alloc] init]; | |
| 207 | + [self presentViewController:shortVideoVC animated:YES completion:NULL]; | |
| 208 | + } | |
| 202 | 209 | |
| 203 | 210 | // if(indexPath.row == 0) |
| 204 | 211 | // { | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Controllers/LVCShortVideoController.h
0 → 100644
LiveVideoCloud/Classes/Sections/Mine/Controllers/LVCShortVideoController.m
0 → 100644
| 1 | +// | |
| 2 | +// LVCShortVideoController.m | |
| 3 | +// LiveVideoCloud | |
| 4 | +// | |
| 5 | +// Created by iOS on 2017/7/7. | |
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import "LVCShortVideoController.h" | |
| 10 | +#import "LVCPreviewView.h" | |
| 11 | +#import "LVCAERootView.h" | |
| 12 | + | |
| 13 | +#define kAERootViewHideFrame CGRectMake(0, KScreenHeight, KScreenWidth, 212) | |
| 14 | +#define kAERootViewShowFrame CGRectMake(0, KScreenHeight - 212, KScreenWidth, 212) | |
| 15 | + | |
| 16 | +@interface LVCShortVideoController () | |
| 17 | + | |
| 18 | +@property (nonatomic, strong) LVCPreviewView *previewView; | |
| 19 | +@property (nonatomic, strong) LVCAERootView *aeRootView; | |
| 20 | +@end | |
| 21 | + | |
| 22 | +@implementation LVCShortVideoController | |
| 23 | + | |
| 24 | +- (void)viewDidLoad { | |
| 25 | + [super viewDidLoad]; | |
| 26 | + // Do any additional setup after loading the view. | |
| 27 | + self.view.backgroundColor = [UIColor blackColor]; | |
| 28 | + | |
| 29 | + [self.view addSubview:self.previewView]; | |
| 30 | + [self.view addSubview:self.aeRootView]; | |
| 31 | + | |
| 32 | + [self p_setupPreViewEvent]; | |
| 33 | + | |
| 34 | +} | |
| 35 | + | |
| 36 | +#pragma mark - | |
| 37 | +#pragma mark - Action | |
| 38 | +- (void)p_setupPreViewEvent { | |
| 39 | + | |
| 40 | + __weak typeof(self) weakSelf = self; | |
| 41 | + | |
| 42 | + self.previewView.onEvent = ^(PreViewSubViewIdx idx, int extra) { | |
| 43 | + NSLog(@"index ------- %lu", (unsigned long)idx); | |
| 44 | + | |
| 45 | + switch (idx) { | |
| 46 | + case PreViewSubViewIdx_Close: | |
| 47 | + | |
| 48 | + [weakSelf dismissViewControllerAnimated:YES completion:NULL]; | |
| 49 | + | |
| 50 | + break; | |
| 51 | + | |
| 52 | + case PreViewSubViewIdx_Beauty: | |
| 53 | + | |
| 54 | + break; | |
| 55 | + | |
| 56 | + case PreViewSubViewIdx_Flash: | |
| 57 | + | |
| 58 | + break; | |
| 59 | + | |
| 60 | + case PreViewSubViewIdx_ToggleCamera: | |
| 61 | + | |
| 62 | + break; | |
| 63 | + | |
| 64 | + case PreViewSubViewIdx_Function: { | |
| 65 | + [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ | |
| 66 | + weakSelf.aeRootView.tag = kAEShow; | |
| 67 | + weakSelf.aeRootView.frame = kAERootViewShowFrame; | |
| 68 | + } completion:^(BOOL finished) { | |
| 69 | + | |
| 70 | + }]; | |
| 71 | + } | |
| 72 | + break; | |
| 73 | + | |
| 74 | + case PreViewSubViewIdx_Effects: | |
| 75 | + | |
| 76 | + break; | |
| 77 | + | |
| 78 | + case PreViewSubViewIdx_Revoke: | |
| 79 | + weakSelf.previewView.effectsBtn.videoMgrState = kDeleteState; | |
| 80 | + | |
| 81 | + break; | |
| 82 | + | |
| 83 | + case PreViewSubViewIdx_Delete: | |
| 84 | + weakSelf.previewView.effectsBtn.videoMgrState = kBackSelect; | |
| 85 | + | |
| 86 | + break; | |
| 87 | + | |
| 88 | + case PreViewSubViewIdx_Record: | |
| 89 | + | |
| 90 | + weakSelf.previewView.effectsBtn.videoMgrState = kBackSelect; | |
| 91 | + | |
| 92 | + break; | |
| 93 | + | |
| 94 | + case PreViewSubViewIdx_Next: | |
| 95 | + | |
| 96 | + break; | |
| 97 | + | |
| 98 | + default: | |
| 99 | + break; | |
| 100 | + } | |
| 101 | + | |
| 102 | + | |
| 103 | + }; | |
| 104 | +} | |
| 105 | + | |
| 106 | +- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { | |
| 107 | + if (self.aeRootView.tag == kAEShow){ | |
| 108 | + CGPoint locationPoint = [[touches anyObject] locationInView:self.view]; | |
| 109 | + CGPoint aePoint = [self.aeRootView convertPoint:locationPoint fromView:self.view]; | |
| 110 | + if (![self.aeRootView pointInside:aePoint withEvent:event]) { | |
| 111 | + __weak typeof(self) weakSelf = self; | |
| 112 | + [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ | |
| 113 | + weakSelf.aeRootView.frame = kAERootViewHideFrame; | |
| 114 | + } completion:^(BOOL finished) { | |
| 115 | + weakSelf.aeRootView.tag = kAEHidden; | |
| 116 | + }]; | |
| 117 | + } | |
| 118 | + | |
| 119 | + } | |
| 120 | +} | |
| 121 | + | |
| 122 | +#pragma mark - | |
| 123 | +#pragma mark - getter | |
| 124 | +- (LVCPreviewView *)previewView | |
| 125 | +{ | |
| 126 | + if (!_previewView) { | |
| 127 | + _previewView = [[LVCPreviewView alloc] initWithFrame:self.view.bounds]; | |
| 128 | + } | |
| 129 | + return _previewView; | |
| 130 | +} | |
| 131 | + | |
| 132 | +- (LVCAERootView *)aeRootView | |
| 133 | +{ | |
| 134 | + if (!_aeRootView){ | |
| 135 | + _aeRootView = [[LVCAERootView alloc] initWithFrame:kAERootViewHideFrame]; | |
| 136 | + [(UIView *)[_aeRootView valueForKey:@"decalBtn"] setHidden:YES]; | |
| 137 | + [(UIView *)[_aeRootView valueForKey:@"textDecalBtn"] setHidden:YES]; | |
| 138 | + _aeRootView.userInteractionEnabled = YES; | |
| 139 | + | |
| 140 | + } | |
| 141 | + return _aeRootView; | |
| 142 | +} | |
| 143 | + | |
| 144 | + | |
| 145 | +- (void)didReceiveMemoryWarning { | |
| 146 | + [super didReceiveMemoryWarning]; | |
| 147 | + // Dispose of any resources that can be recreated. | |
| 148 | +} | |
| 149 | + | |
| 150 | +/* | |
| 151 | +#pragma mark - Navigation | |
| 152 | + | |
| 153 | +// In a storyboard-based application, you will often want to do a little preparation before navigation | |
| 154 | +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { | |
| 155 | + // Get the new view controller using [segue destinationViewController]. | |
| 156 | + // Pass the selected object to the new view controller. | |
| 157 | +} | |
| 158 | +*/ | |
| 159 | + | |
| 160 | +@end | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Login/Controller/RegisterCommonController.m
| ... | ... | @@ -63,23 +63,23 @@ |
| 63 | 63 | { |
| 64 | 64 | [SVProgressHUD dismiss]; |
| 65 | 65 | |
| 66 | - if (_type == RegisterTypeRegist) { | |
| 67 | - UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:@"注册即送520个中国币,你确定要放弃了吗?" preferredStyle:UIAlertControllerStyleAlert]; | |
| 68 | - UIAlertAction *cancelAlertAction = [UIAlertAction actionWithTitle:@"放弃" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { | |
| 69 | - [self.navigationController popViewControllerAnimated:YES]; | |
| 70 | - }]; | |
| 71 | - UIAlertAction *okAlertAction = [UIAlertAction actionWithTitle:@"追求财富" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { | |
| 72 | - | |
| 73 | - }]; | |
| 74 | - [alertController addAction:cancelAlertAction]; | |
| 75 | - [alertController addAction:okAlertAction]; | |
| 76 | - [self presentViewController:alertController animated:YES completion:nil]; | |
| 77 | - | |
| 78 | - }else | |
| 79 | - { | |
| 66 | +// if (_type == RegisterTypeRegist) { | |
| 67 | +// UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:@"注册即送520个中国币,你确定要放弃了吗?" preferredStyle:UIAlertControllerStyleAlert]; | |
| 68 | +// UIAlertAction *cancelAlertAction = [UIAlertAction actionWithTitle:@"放弃" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { | |
| 69 | +// [self.navigationController popViewControllerAnimated:YES]; | |
| 70 | +// }]; | |
| 71 | +// UIAlertAction *okAlertAction = [UIAlertAction actionWithTitle:@"追求财富" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { | |
| 72 | +// | |
| 73 | +// }]; | |
| 74 | +// [alertController addAction:cancelAlertAction]; | |
| 75 | +// [alertController addAction:okAlertAction]; | |
| 76 | +// [self presentViewController:alertController animated:YES completion:nil]; | |
| 77 | +// | |
| 78 | +// }else | |
| 79 | +// { | |
| 80 | 80 | [self.navigationController popViewControllerAnimated:YES]; |
| 81 | 81 | // [super onBackAction]; |
| 82 | - } | |
| 82 | +// } | |
| 83 | 83 | } |
| 84 | 84 | |
| 85 | 85 | - (void)verificationBtnAction | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Model/AEModelTemplate.h
0 → 100644
| 1 | +// | |
| 2 | +// AEModelTemplate.h | |
| 3 | +// LiveVideoCloud | |
| 4 | +// | |
| 5 | +// Created by iOS on 2017/7/7. | |
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import <Foundation/Foundation.h> | |
| 10 | + | |
| 11 | +@interface AEModelTemplate : NSObject | |
| 12 | + | |
| 13 | +@property(nonatomic, assign)NSUInteger type; | |
| 14 | + | |
| 15 | +@property(nonatomic, assign)NSUInteger idx; | |
| 16 | + | |
| 17 | +@property(nonatomic, strong)UIImage *image; | |
| 18 | + | |
| 19 | +@property(nonatomic, strong)NSString *txt; | |
| 20 | + | |
| 21 | +@property(nonatomic, strong)NSString *path; | |
| 22 | + | |
| 23 | +@end | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Model/AEModelTemplate.m
0 → 100644
LiveVideoCloud/Classes/Sections/Mine/Views/AECommonCell.h
0 → 100644
| 1 | +// | |
| 2 | +// AECommonCell.h | |
| 3 | +// LiveVideoCloud | |
| 4 | +// | |
| 5 | +// Created by iOS on 2017/7/7. | |
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import <UIKit/UIKit.h> | |
| 10 | +#import "AEModelTemplate.h" | |
| 11 | + | |
| 12 | +@interface AECommonCell : UICollectionViewCell | |
| 13 | + | |
| 14 | +@property (nonatomic, strong) AEModelTemplate *model; | |
| 15 | + | |
| 16 | +@end | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Views/AECommonCell.m
0 → 100644
| 1 | +// | |
| 2 | +// AECommonCell.m | |
| 3 | +// LiveVideoCloud | |
| 4 | +// | |
| 5 | +// Created by iOS on 2017/7/7. | |
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import "AECommonCell.h" | |
| 10 | + | |
| 11 | +@interface AECommonCell () { | |
| 12 | + BOOL _isOrigin; | |
| 13 | +} | |
| 14 | + | |
| 15 | + | |
| 16 | +@property(nonatomic, strong)UIImageView *thumb; | |
| 17 | +@property(nonatomic, strong)UILabel *tips; | |
| 18 | + | |
| 19 | +@end | |
| 20 | + | |
| 21 | +@implementation AECommonCell | |
| 22 | + | |
| 23 | +- (instancetype)initWithFrame:(CGRect)frame | |
| 24 | +{ | |
| 25 | + self = [super initWithFrame:frame]; | |
| 26 | + if (self) { | |
| 27 | + | |
| 28 | + [self addSubview:self.thumb]; | |
| 29 | + [self addSubview:self.tips]; | |
| 30 | + } | |
| 31 | + return self; | |
| 32 | +} | |
| 33 | + | |
| 34 | +#pragma mark - | |
| 35 | +#pragma mark - getter | |
| 36 | +- (UIImageView *)thumb | |
| 37 | +{ | |
| 38 | + if (!_thumb){ | |
| 39 | + _thumb = [[UIImageView alloc] initWithFrame:CGRectMake(self.bounds.size.width/2-30, 10, 60, 60)]; | |
| 40 | + _thumb.layer.cornerRadius = 30; | |
| 41 | + _thumb.layer.masksToBounds = YES; | |
| 42 | + } | |
| 43 | + return _thumb; | |
| 44 | +} | |
| 45 | + | |
| 46 | +-(UILabel *)tips | |
| 47 | +{ | |
| 48 | + if (!_tips){ | |
| 49 | + _tips = [[UILabel alloc] initWithFrame:CGRectMake(0, self.bounds.size.height-30, self.bounds.size.width, 30)]; | |
| 50 | + _tips.textColor = [UIColor colorWithHexString:@"#999999"]; | |
| 51 | + _tips.textAlignment = NSTextAlignmentCenter; | |
| 52 | + _tips.font = [UIFont systemFontOfSize:14]; | |
| 53 | + } | |
| 54 | + return _tips; | |
| 55 | +} | |
| 56 | + | |
| 57 | +- (void)setModel:(AEModelTemplate *)model | |
| 58 | +{ | |
| 59 | + _thumb.image = model.image; | |
| 60 | + _tips.text = model.txt; | |
| 61 | + if (!model.txt || model.txt.length == 0){ | |
| 62 | + _tips.hidden = YES; | |
| 63 | + _isOrigin = YES; | |
| 64 | + }else{ | |
| 65 | + _isOrigin = NO; | |
| 66 | + _tips.hidden = NO; | |
| 67 | + } | |
| 68 | +} | |
| 69 | + | |
| 70 | +- (void)setSelected:(BOOL)selected{ | |
| 71 | + | |
| 72 | + [super setSelected:selected]; | |
| 73 | + if (selected) { | |
| 74 | + [self onSelected]; | |
| 75 | + }else{ | |
| 76 | + [self onUnselected]; | |
| 77 | + } | |
| 78 | +} | |
| 79 | +- (void)onSelected | |
| 80 | +{ | |
| 81 | + if (_isOrigin) return ; | |
| 82 | + self.thumb.layer.borderColor = [UIColor colorWithHexString:@"#ff2e42"].CGColor; | |
| 83 | + self.thumb.layer.borderWidth = 2; | |
| 84 | + self.tips.textColor = [UIColor colorWithHexString:@"#ff2e42"]; | |
| 85 | +} | |
| 86 | + | |
| 87 | +- (void)onUnselected | |
| 88 | +{ | |
| 89 | + if (_isOrigin) return ; | |
| 90 | + self.thumb.layer.borderColor = [[UIColor clearColor]CGColor]; | |
| 91 | + self.thumb.layer.borderWidth = 0; | |
| 92 | + self.tips.textColor = [UIColor colorWithHexString:@"#999999"]; | |
| 93 | + | |
| 94 | +} | |
| 95 | +@end | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Views/LVCAECommonView.h
0 → 100644
| 1 | +// | |
| 2 | +// LVCAECommonView.h | |
| 3 | +// LiveVideoCloud | |
| 4 | +// | |
| 5 | +// Created by iOS on 2017/7/7. | |
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import <UIKit/UIKit.h> | |
| 10 | +#import "AEModelTemplate.h" | |
| 11 | + | |
| 12 | +@interface LVCAECommonView : UIView | |
| 13 | + | |
| 14 | +- (instancetype)initWithFrame:(CGRect)frame type:(NSUInteger)type data:(NSArray<__kindof AEModelTemplate *> *)dataSource; | |
| 15 | + | |
| 16 | +@end | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Views/LVCAECommonView.m
0 → 100644
| 1 | + | |
| 2 | +// | |
| 3 | +// LVCAECommonView.m | |
| 4 | +// LiveVideoCloud | |
| 5 | +// | |
| 6 | +// Created by iOS on 2017/7/7. | |
| 7 | +// Copyright © 2017年 cnlive. All rights reserved. | |
| 8 | +// | |
| 9 | + | |
| 10 | +#import "LVCAECommonView.h" | |
| 11 | +#import "AECommonCell.h" | |
| 12 | + | |
| 13 | +@interface LVCAECommonView ()<UICollectionViewDelegate, UICollectionViewDataSource> | |
| 14 | + | |
| 15 | +@property (nonatomic, strong) UICollectionView *collectionView; | |
| 16 | +@property (nonatomic, strong) NSArray<__kindof AEModelTemplate *> *dataArray; | |
| 17 | + | |
| 18 | +@end | |
| 19 | + | |
| 20 | +@implementation LVCAECommonView | |
| 21 | + | |
| 22 | +- (instancetype)initWithFrame:(CGRect)frame type:(NSUInteger)type data:(NSArray<__kindof AEModelTemplate *> *)dataSource { | |
| 23 | + | |
| 24 | + self = [super initWithFrame:frame]; | |
| 25 | + if (self) { | |
| 26 | + | |
| 27 | + _dataArray = dataSource; | |
| 28 | + | |
| 29 | + } | |
| 30 | + return self; | |
| 31 | +} | |
| 32 | + | |
| 33 | +#pragma mark - | |
| 34 | +#pragma mark - getter | |
| 35 | +- (UICollectionView *)collectionView | |
| 36 | +{ | |
| 37 | + if (!_collectionView) { | |
| 38 | + | |
| 39 | + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; | |
| 40 | + layout.itemSize = CGSizeMake(75, 100); | |
| 41 | + layout.sectionInset = UIEdgeInsetsMake(0, 10, 0, 10); | |
| 42 | + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; | |
| 43 | + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(10, 20, KScreenWidth-20, 100) collectionViewLayout:layout]; | |
| 44 | + _collectionView.delegate = self; | |
| 45 | + _collectionView.dataSource = self; | |
| 46 | + _collectionView.backgroundColor = [UIColor clearColor]; | |
| 47 | + _collectionView.showsHorizontalScrollIndicator = NO; | |
| 48 | + _collectionView.scrollsToTop = YES; | |
| 49 | + } | |
| 50 | + return _collectionView; | |
| 51 | +} | |
| 52 | + | |
| 53 | +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath | |
| 54 | +{ | |
| 55 | + static NSString *identifier = @"AECommonCell"; | |
| 56 | + AECommonCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; | |
| 57 | + cell.model = self.dataArray[indexPath.row]; | |
| 58 | + return cell; | |
| 59 | +} | |
| 60 | + | |
| 61 | +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath | |
| 62 | +{ | |
| 63 | + | |
| 64 | +} | |
| 65 | + | |
| 66 | +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section | |
| 67 | +{ | |
| 68 | + return self.dataArray.count; | |
| 69 | +} | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | +- (NSArray<AEModelTemplate *> *)dataArray | |
| 74 | +{ | |
| 75 | + if (!_dataArray){ | |
| 76 | + _dataArray = [[NSArray alloc] init]; | |
| 77 | + } | |
| 78 | + return _dataArray; | |
| 79 | +} | |
| 80 | + | |
| 81 | +/* | |
| 82 | +// Only override drawRect: if you perform custom drawing. | |
| 83 | +// An empty implementation adversely affects performance during animation. | |
| 84 | +- (void)drawRect:(CGRect)rect { | |
| 85 | + // Drawing code | |
| 86 | +} | |
| 87 | +*/ | |
| 88 | + | |
| 89 | +@end | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Views/LVCAERootView.h
0 → 100644
| 1 | +// | |
| 2 | +// LVCAERootView.h | |
| 3 | +// LiveVideoCloud | |
| 4 | +// | |
| 5 | +// Created by iOS on 2017/7/7. | |
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import <UIKit/UIKit.h> | |
| 10 | + | |
| 11 | +typedef NS_ENUM(NSInteger, CNLiveSelectorType){ | |
| 12 | + CNLiveSelectorType_Reverb, // 混响 | |
| 13 | + CNLiveSelectorType_AE, // 音效 | |
| 14 | + CNLiveSelectorType_BGM, // 背景音 | |
| 15 | + CNLiveSelectorType_Decal, // 贴纸 | |
| 16 | + CNLiveSelectorType_TextDecal, // 字幕 | |
| 17 | +}; | |
| 18 | + | |
| 19 | +@interface LVCAERootView : UIView | |
| 20 | + | |
| 21 | +typedef NS_ENUM(NSUInteger, kAEStatus){ | |
| 22 | + kAEHidden, | |
| 23 | + kAEShow, | |
| 24 | +}; | |
| 25 | + | |
| 26 | +@end | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Views/LVCAERootView.m
0 → 100644
| 1 | +// | |
| 2 | +// LVCAERootView.m | |
| 3 | +// LiveVideoCloud | |
| 4 | +// | |
| 5 | +// Created by iOS on 2017/7/7. | |
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import "LVCAERootView.h" | |
| 10 | +#import "LVCAECommonView.h" | |
| 11 | +#import "AEModelTemplate.h" | |
| 12 | + | |
| 13 | +@interface LVCAERootView () | |
| 14 | +{ | |
| 15 | + NSMutableArray *_dataArray; | |
| 16 | +} | |
| 17 | + | |
| 18 | +@property (nonatomic, strong) UIButton *bgmBtn; //背景音乐 | |
| 19 | +@property (nonatomic, strong) UIButton *aeBtn; //变声 | |
| 20 | +@property (nonatomic, strong) UIButton *reverbBtn; //混响 | |
| 21 | +@property (nonatomic, strong) UIButton *decalBtn; //贴纸 | |
| 22 | +@property (nonatomic, strong) UIButton *textDecalBtn; //字幕 | |
| 23 | + | |
| 24 | +@property (nonatomic, strong) LVCAECommonView *bgmView; | |
| 25 | +@property (nonatomic, strong) LVCAECommonView *aeView; | |
| 26 | +@property (nonatomic, strong) LVCAECommonView *reverbView; | |
| 27 | +@property (nonatomic, strong) LVCAECommonView *decalView; | |
| 28 | +@property (nonatomic, strong) LVCAECommonView *textDecalView; | |
| 29 | + | |
| 30 | +@end | |
| 31 | + | |
| 32 | +@implementation LVCAERootView | |
| 33 | + | |
| 34 | +- (instancetype)initWithFrame:(CGRect)frame | |
| 35 | +{ | |
| 36 | + self = [super initWithFrame:frame]; | |
| 37 | + if (self) { | |
| 38 | + self.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1.0]; | |
| 39 | + [self addSubview:self.bgmBtn]; | |
| 40 | + [self addSubview:self.aeBtn]; | |
| 41 | + [self addSubview:self.reverbBtn]; | |
| 42 | + [self addSubview:self.decalBtn]; | |
| 43 | + [self addSubview:self.textDecalBtn]; | |
| 44 | + | |
| 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 | + } | |
| 57 | + return self; | |
| 58 | +} | |
| 59 | + | |
| 60 | +- (void)onSelectBgm:(id)sender | |
| 61 | +{ | |
| 62 | + self.aeBtn.selected = NO; | |
| 63 | + self.bgmBtn.selected = YES; | |
| 64 | + self.reverbBtn.selected = NO; | |
| 65 | + self.decalBtn.selected = NO; | |
| 66 | + self.textDecalBtn.selected = NO; | |
| 67 | + | |
| 68 | +} | |
| 69 | + | |
| 70 | +- (void)onSelectAe:(id)sender | |
| 71 | +{ | |
| 72 | + self.aeBtn.selected = YES; | |
| 73 | + self.bgmBtn.selected = NO; | |
| 74 | + self.reverbBtn.selected = NO; | |
| 75 | + self.decalBtn.selected = NO; | |
| 76 | +} | |
| 77 | + | |
| 78 | +- (void)onSelectReverb:(id)sender | |
| 79 | +{ | |
| 80 | + self.reverbBtn.selected = YES; | |
| 81 | + self.aeBtn.selected = NO; | |
| 82 | + self.bgmBtn.selected = NO; | |
| 83 | + self.decalBtn.selected = NO; | |
| 84 | + self.textDecalBtn.selected = NO; | |
| 85 | + | |
| 86 | +} | |
| 87 | + | |
| 88 | +- (void)onSelectDecel:(id)sender{ | |
| 89 | + self.reverbBtn.selected = NO; | |
| 90 | + self.aeBtn.selected = NO; | |
| 91 | + self.bgmBtn.selected = NO; | |
| 92 | + self.decalBtn.selected = YES; | |
| 93 | + self.textDecalBtn.selected = NO; | |
| 94 | + | |
| 95 | +} | |
| 96 | + | |
| 97 | +- (void)onSelectTextDecal:(UIButton *)btn{ | |
| 98 | + self.reverbBtn.selected = NO; | |
| 99 | + self.aeBtn.selected = NO; | |
| 100 | + self.bgmBtn.selected = NO; | |
| 101 | + self.decalBtn.selected = NO; | |
| 102 | + self.textDecalBtn.selected = YES; | |
| 103 | + | |
| 104 | +} | |
| 105 | + | |
| 106 | +#pragma mark - | |
| 107 | +#pragma mark - getter | |
| 108 | +- (UIButton *)bgmBtn | |
| 109 | +{ | |
| 110 | + if (!_bgmBtn){ | |
| 111 | + _bgmBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 112 | + _bgmBtn.frame = CGRectMake(10, 10, 60, 30); | |
| 113 | + [_bgmBtn setTitle:@"背景音乐" forState:UIControlStateNormal]; | |
| 114 | + [_bgmBtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; | |
| 115 | + [_bgmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; | |
| 116 | + _bgmBtn.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14]; | |
| 117 | + [_bgmBtn addTarget:self action:@selector(onSelectBgm:) forControlEvents:UIControlEventTouchUpInside]; | |
| 118 | + } | |
| 119 | + return _bgmBtn; | |
| 120 | +} | |
| 121 | + | |
| 122 | +- (UIButton *)aeBtn | |
| 123 | +{ | |
| 124 | + if (!_aeBtn){ | |
| 125 | + _aeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 126 | + _aeBtn.frame = CGRectMake(90, 10, 40, 30); | |
| 127 | + [_aeBtn setTitle:@"变声" forState:UIControlStateNormal]; | |
| 128 | + [_aeBtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; | |
| 129 | + [_aeBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; | |
| 130 | + _aeBtn.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14]; | |
| 131 | + _aeBtn.titleLabel.textColor = [UIColor whiteColor]; | |
| 132 | + [_aeBtn addTarget:self action:@selector(onSelectAe:) forControlEvents:UIControlEventTouchUpInside]; | |
| 133 | + } | |
| 134 | + return _aeBtn; | |
| 135 | +} | |
| 136 | + | |
| 137 | + | |
| 138 | +- (UIButton *)reverbBtn | |
| 139 | +{ | |
| 140 | + if (!_reverbBtn){ | |
| 141 | + _reverbBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 142 | + _reverbBtn.frame = CGRectMake(150, 10, 40, 30); | |
| 143 | + [_reverbBtn setTitle:@"混响" forState:UIControlStateNormal]; | |
| 144 | + [_reverbBtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; | |
| 145 | + [_reverbBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; | |
| 146 | + _reverbBtn.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14]; | |
| 147 | + _reverbBtn.titleLabel.textColor = [UIColor whiteColor]; | |
| 148 | + [_reverbBtn addTarget:self action:@selector(onSelectReverb:) forControlEvents:UIControlEventTouchUpInside]; | |
| 149 | + } | |
| 150 | + return _reverbBtn; | |
| 151 | +} | |
| 152 | + | |
| 153 | +- (UIButton *)decalBtn{ | |
| 154 | + if (!_decalBtn){ | |
| 155 | + _decalBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 156 | + _decalBtn.frame = CGRectMake(210, 10, 40, 30); | |
| 157 | + [_decalBtn setTitle:@"贴纸" forState:UIControlStateNormal]; | |
| 158 | + [_decalBtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; | |
| 159 | + [_decalBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; | |
| 160 | + _decalBtn.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14]; | |
| 161 | + _decalBtn.titleLabel.textColor = [UIColor whiteColor]; | |
| 162 | + [_decalBtn addTarget:self action:@selector(onSelectDecel:) forControlEvents:UIControlEventTouchUpInside]; | |
| 163 | + } | |
| 164 | + return _decalBtn; | |
| 165 | +} | |
| 166 | + | |
| 167 | +- (UIButton *)textDecalBtn{ | |
| 168 | + if (!_textDecalBtn){ | |
| 169 | + _textDecalBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 170 | + _textDecalBtn.frame = CGRectMake(270, 10, 40, 30); | |
| 171 | + [_textDecalBtn setTitle:@"字幕" forState:UIControlStateNormal]; | |
| 172 | + [_textDecalBtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; | |
| 173 | + [_textDecalBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; | |
| 174 | + _textDecalBtn.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14]; | |
| 175 | + _textDecalBtn.titleLabel.textColor = [UIColor whiteColor]; | |
| 176 | + [_textDecalBtn addTarget:self action:@selector(onSelectTextDecal:) forControlEvents:UIControlEventTouchUpInside]; | |
| 177 | + } | |
| 178 | + return _textDecalBtn; | |
| 179 | +} | |
| 180 | + | |
| 181 | +//- (BgmSelectorView *)bgmView | |
| 182 | +//{ | |
| 183 | +// if (!_bgmView){ | |
| 184 | +// _bgmView = [[BgmSelectorView alloc] initWithFrame:CGRectMake(0, 30, KScreenWidth, 172)]; | |
| 185 | +// } | |
| 186 | +// return _bgmView; | |
| 187 | +//} | |
| 188 | + | |
| 189 | + | |
| 190 | +- (LVCAECommonView *)aeView | |
| 191 | +{ | |
| 192 | + if (!_aeView){ | |
| 193 | + _aeView = [[LVCAECommonView alloc] initWithFrame:CGRectMake(0, 40, KScreenWidth, 172) type:CNLiveSelectorType_AE data:@[]]; | |
| 194 | + _aeView.frame = CGRectMake(0, 40, KScreenWidth, 172); | |
| 195 | + } | |
| 196 | + return _aeView; | |
| 197 | +} | |
| 198 | + | |
| 199 | +- (LVCAECommonView *)reverbView | |
| 200 | +{ | |
| 201 | + if (!_reverbView){ | |
| 202 | + _reverbView = [[LVCAECommonView alloc] initWithFrame:CGRectMake(0, 40, KScreenWidth, 172) type:CNLiveSelectorType_Reverb data:@[]]; | |
| 203 | + } | |
| 204 | + return _reverbView; | |
| 205 | +} | |
| 206 | + | |
| 207 | +- (LVCAECommonView *)decalView | |
| 208 | +{ | |
| 209 | + if (!_decalView){ | |
| 210 | + _decalView = [[LVCAECommonView alloc] initWithFrame:CGRectMake(0, 40, KScreenWidth, 172) type:CNLiveSelectorType_Decal data:@[]]; | |
| 211 | + } | |
| 212 | + return _decalView; | |
| 213 | +} | |
| 214 | + | |
| 215 | +- (LVCAECommonView *)textDecalView | |
| 216 | +{ | |
| 217 | + if (!_textDecalView){ | |
| 218 | + _textDecalView = [[LVCAECommonView alloc] initWithFrame:CGRectMake(0, 40, KScreenWidth, 172) type:CNLiveSelectorType_TextDecal data:@[]]; | |
| 219 | + } | |
| 220 | + return _textDecalView; | |
| 221 | +} | |
| 222 | +/* | |
| 223 | +// Only override drawRect: if you perform custom drawing. | |
| 224 | +// An empty implementation adversely affects performance during animation. | |
| 225 | +- (void)drawRect:(CGRect)rect { | |
| 226 | + // Drawing code | |
| 227 | +} | |
| 228 | +*/ | |
| 229 | + | |
| 230 | +@end | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Views/LVCPreviewView.h
0 → 100644
| 1 | +// | |
| 2 | +// LVCPreviewView.h | |
| 3 | +// LiveVideoCloud | |
| 4 | +// | |
| 5 | +// Created by iOS on 2017/7/7. | |
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import <UIKit/UIKit.h> | |
| 10 | +#import "LVCVideoMgrButton.h" | |
| 11 | + | |
| 12 | +typedef NS_ENUM(NSUInteger, PreViewSubViewIdx){ | |
| 13 | + PreViewSubViewIdx_Close, //关闭 | |
| 14 | + PreViewSubViewIdx_Beauty, //美颜 | |
| 15 | + PreViewSubViewIdx_Flash, //闪光灯 | |
| 16 | + PreViewSubViewIdx_ToggleCamera, //切换摄像头 | |
| 17 | + PreViewSubViewIdx_Function, //更多功能 | |
| 18 | + PreViewSubViewIdx_Record, //录制 | |
| 19 | + PreViewSubViewIdx_LocalVideo, //选择本地 | |
| 20 | + PreViewSubViewIdx_Delete, //删除 | |
| 21 | + PreViewSubViewIdx_Revoke, //撤回 | |
| 22 | + PreViewSubViewIdx_Next, //上传(next) | |
| 23 | + PreViewSubViewIdx_Effects, //动态贴纸 | |
| 24 | +}; | |
| 25 | + | |
| 26 | + | |
| 27 | +@interface LVCPreviewView : UIView | |
| 28 | + | |
| 29 | +@property (nonatomic, strong) UIButton *closeBtn; //关闭 | |
| 30 | +@property (nonatomic, strong) UIButton *toggleCameraBtn; //摄像头 | |
| 31 | +@property (nonatomic, strong) UIButton *flashBtn; //闪光灯 | |
| 32 | +@property (nonatomic, strong) UIButton *beautyBtn; //美颜滤镜 | |
| 33 | +@property (nonatomic, strong) UIButton *recordBtn; //录制 | |
| 34 | +@property (nonatomic, strong) LVCVideoMgrButton *effectsBtn; //动态贴纸 | |
| 35 | +@property (nonatomic, strong) UILabel *recordTimeLabel; //时间 | |
| 36 | +@property (nonatomic, strong) UIButton *nextBtn; //next | |
| 37 | +@property (nonatomic, strong) UIButton *funcBtn; //更多功能 | |
| 38 | +@property (nonatomic, strong) UIButton *localBtn; //更多功能 | |
| 39 | +@property (nonatomic, strong) UIView *previewView; | |
| 40 | +@property (nonatomic, copy) void (^onEvent)(PreViewSubViewIdx idx, int extra); //按钮响应事件回调 | |
| 41 | + | |
| 42 | +@end | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Views/LVCPreviewView.m
0 → 100644
| 1 | +// | |
| 2 | +// LVCPreviewView.m | |
| 3 | +// LiveVideoCloud | |
| 4 | +// | |
| 5 | +// Created by iOS on 2017/7/7. | |
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import "LVCPreviewView.h" | |
| 10 | + | |
| 11 | +#define TOP_ICON_WIDTH 25 | |
| 12 | +#define SPACE (KScreenWidth-5*TOP_ICON_WIDTH-30)/4 | |
| 13 | +#define BOTTOM_ICON_WIDTH 40 | |
| 14 | + | |
| 15 | +@implementation LVCPreviewView | |
| 16 | + | |
| 17 | +- (instancetype)initWithFrame:(CGRect)frame | |
| 18 | +{ | |
| 19 | + self = [super initWithFrame:frame]; | |
| 20 | + if (self) { | |
| 21 | + [self addSubview:self.closeBtn]; | |
| 22 | + [self addSubview:self.beautyBtn]; | |
| 23 | + [self addSubview:self.flashBtn]; | |
| 24 | + [self addSubview:self.toggleCameraBtn]; | |
| 25 | + [self addSubview:self.funcBtn]; | |
| 26 | + [self addSubview:self.effectsBtn]; | |
| 27 | + [self addSubview:self.recordBtn]; | |
| 28 | + [self addSubview:self.nextBtn]; | |
| 29 | + [self addSubview:self.localBtn]; | |
| 30 | + | |
| 31 | + | |
| 32 | + } | |
| 33 | + return self; | |
| 34 | +} | |
| 35 | + | |
| 36 | +#pragma mark - | |
| 37 | +#pragma mark - Action | |
| 38 | +- (void)onClick:(UIButton *)sender | |
| 39 | +{ | |
| 40 | + if (self.onEvent){ | |
| 41 | + | |
| 42 | + self.onEvent(sender.tag, 0); | |
| 43 | + } | |
| 44 | + | |
| 45 | +} | |
| 46 | + | |
| 47 | +#pragma mark - | |
| 48 | +#pragma mark - getter | |
| 49 | +- (UIButton *)closeBtn | |
| 50 | +{ | |
| 51 | + if (!_closeBtn){ | |
| 52 | + _closeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 53 | + _closeBtn.frame = CGRectMake(15, 15, TOP_ICON_WIDTH, TOP_ICON_WIDTH); | |
| 54 | + _closeBtn.tag = PreViewSubViewIdx_Close; | |
| 55 | + [_closeBtn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside]; | |
| 56 | + [_closeBtn setImage:[UIImage imageNamed:@"叉"] forState:UIControlStateNormal]; | |
| 57 | + } | |
| 58 | + return _closeBtn; | |
| 59 | +} | |
| 60 | + | |
| 61 | +- (UIButton *)beautyBtn | |
| 62 | +{ | |
| 63 | + if (!_beautyBtn){ | |
| 64 | + _beautyBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 65 | + _beautyBtn.frame = CGRectMake(self.closeBtn.right+SPACE, 15, TOP_ICON_WIDTH, TOP_ICON_WIDTH); | |
| 66 | + _beautyBtn.tag = PreViewSubViewIdx_Beauty; | |
| 67 | + [_beautyBtn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside]; | |
| 68 | + [_beautyBtn setImage:[UIImage imageNamed:@"美颜"] forState:UIControlStateNormal]; | |
| 69 | + [_beautyBtn setImage:[UIImage imageNamed:@"美颜-2"] forState:UIControlStateSelected]; | |
| 70 | + } | |
| 71 | + return _beautyBtn; | |
| 72 | +} | |
| 73 | + | |
| 74 | +- (UIButton *)flashBtn | |
| 75 | +{ | |
| 76 | + if (!_flashBtn){ | |
| 77 | + _flashBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 78 | + _flashBtn.frame = CGRectMake(self.beautyBtn.right+SPACE, 15, TOP_ICON_WIDTH, TOP_ICON_WIDTH); | |
| 79 | + _flashBtn.tag = PreViewSubViewIdx_Flash; | |
| 80 | + [_flashBtn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside]; | |
| 81 | + [_flashBtn setImage:[UIImage imageNamed:@"闪光灯关闭"] forState:UIControlStateNormal]; | |
| 82 | + [_flashBtn setImage:[UIImage imageNamed:@"闪光灯开启"] forState:UIControlStateSelected]; | |
| 83 | + } | |
| 84 | + return _flashBtn; | |
| 85 | +} | |
| 86 | + | |
| 87 | +- (UIButton *)toggleCameraBtn | |
| 88 | +{ | |
| 89 | + if (!_toggleCameraBtn){ | |
| 90 | + _toggleCameraBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 91 | + _toggleCameraBtn.frame = CGRectMake(self.flashBtn.right+SPACE, 15, TOP_ICON_WIDTH, TOP_ICON_WIDTH); | |
| 92 | + _toggleCameraBtn.tag = PreViewSubViewIdx_ToggleCamera; | |
| 93 | + [_toggleCameraBtn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside]; | |
| 94 | + [_toggleCameraBtn setImage:[UIImage imageNamed:@"相机"] forState:UIControlStateNormal]; | |
| 95 | + } | |
| 96 | + return _toggleCameraBtn; | |
| 97 | +} | |
| 98 | + | |
| 99 | +- (UIButton *)funcBtn | |
| 100 | +{ | |
| 101 | + if (!_funcBtn){ | |
| 102 | + _funcBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 103 | + _funcBtn.frame = CGRectMake(self.toggleCameraBtn.right+SPACE, 15, TOP_ICON_WIDTH, TOP_ICON_WIDTH); | |
| 104 | + _funcBtn.tag = PreViewSubViewIdx_Function; | |
| 105 | + [_funcBtn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside]; | |
| 106 | + [_funcBtn setImage:[UIImage imageNamed:@"功能"] forState:UIControlStateNormal]; | |
| 107 | + } | |
| 108 | + return _funcBtn; | |
| 109 | +} | |
| 110 | + | |
| 111 | +- (UIButton *)nextBtn | |
| 112 | +{ | |
| 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; | |
| 117 | + [_nextBtn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside]; | |
| 118 | + [_nextBtn setImage:[UIImage imageNamed:@"对勾 (2)"] forState:UIControlStateNormal]; | |
| 119 | + } | |
| 120 | + return _nextBtn; | |
| 121 | +} | |
| 122 | + | |
| 123 | +- (UIButton *)recordBtn | |
| 124 | +{ | |
| 125 | + if (!_recordBtn){ | |
| 126 | + _recordBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 127 | + _recordBtn.frame = CGRectMake(0, 0, 80, 80); | |
| 128 | + _recordBtn.center = CGPointMake(KScreenWidth/2, KScreenHeight-70); | |
| 129 | + _recordBtn.tag = PreViewSubViewIdx_Record; | |
| 130 | + [_recordBtn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside]; | |
| 131 | + [_recordBtn setImage:[UIImage imageNamed:@"record"] forState:UIControlStateNormal]; | |
| 132 | + [_recordBtn setImage:[UIImage imageNamed:@"录制"] forState:UIControlStateSelected]; | |
| 133 | + } | |
| 134 | + return _recordBtn; | |
| 135 | +} | |
| 136 | + | |
| 137 | +- (LVCVideoMgrButton *)effectsBtn | |
| 138 | +{ | |
| 139 | + if (!_effectsBtn){ | |
| 140 | + _effectsBtn = [[LVCVideoMgrButton alloc] initWithFrame:CGRectMake(50, KScreenHeight-BOTTOM_ICON_WIDTH-50, BOTTOM_ICON_WIDTH, BOTTOM_ICON_WIDTH)]; | |
| 141 | + _effectsBtn.videoMgrState = kEffectsState; | |
| 142 | + [_effectsBtn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside]; | |
| 143 | + } | |
| 144 | + return _effectsBtn; | |
| 145 | +} | |
| 146 | + | |
| 147 | + | |
| 148 | +/* | |
| 149 | +// Only override drawRect: if you perform custom drawing. | |
| 150 | +// An empty implementation adversely affects performance during animation. | |
| 151 | +- (void)drawRect:(CGRect)rect { | |
| 152 | + // Drawing code | |
| 153 | +} | |
| 154 | +*/ | |
| 155 | + | |
| 156 | +@end | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Views/LVCVideoMgrButton.h
0 → 100644
| 1 | +// | |
| 2 | +// LVCVideoMgrButton.h | |
| 3 | +// LiveVideoCloud | |
| 4 | +// | |
| 5 | +// Created by iOS on 2017/7/7. | |
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import <UIKit/UIKit.h> | |
| 10 | + | |
| 11 | +enum { | |
| 12 | + kEffectsState = (1 << 16), //导入视频状态 | |
| 13 | + kDeleteState = (1 << 17), //删除状态 | |
| 14 | + kBackSelect = (1 << 18), //回退状态(回退->删除->导入) | |
| 15 | +}; | |
| 16 | + | |
| 17 | +@interface LVCVideoMgrButton : UIButton | |
| 18 | + | |
| 19 | +@property (nonatomic, assign) NSUInteger videoMgrState; | |
| 20 | + | |
| 21 | + | |
| 22 | +@end | ... | ... |
LiveVideoCloud/Classes/Sections/Mine/Views/LVCVideoMgrButton.m
0 → 100644
| 1 | +// | |
| 2 | +// LVCVideoMgrButton.m | |
| 3 | +// LiveVideoCloud | |
| 4 | +// | |
| 5 | +// Created by iOS on 2017/7/7. | |
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import "LVCVideoMgrButton.h" | |
| 10 | +#import "LVCPreviewView.h" | |
| 11 | + | |
| 12 | +@implementation LVCVideoMgrButton | |
| 13 | + | |
| 14 | +- (instancetype)initWithFrame:(CGRect)frame | |
| 15 | +{ | |
| 16 | + self = [super initWithFrame:frame]; | |
| 17 | + if (self){ | |
| 18 | + | |
| 19 | + self.backgroundColor = [UIColor blackColor]; | |
| 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 )]; | |
| 30 | + | |
| 31 | + } | |
| 32 | + return self; | |
| 33 | +} | |
| 34 | + | |
| 35 | +- (void)setVideoMgrState:(NSUInteger)videoMgrState | |
| 36 | +{ | |
| 37 | + if (videoMgrState == kEffectsState){ | |
| 38 | + self.tag = PreViewSubViewIdx_Effects; | |
| 39 | + }else if (videoMgrState == kDeleteState){ | |
| 40 | + self.tag = PreViewSubViewIdx_Delete; | |
| 41 | + }else if (videoMgrState == kBackSelect){ | |
| 42 | + self.tag = PreViewSubViewIdx_Revoke; | |
| 43 | + } | |
| 44 | + _videoMgrState = videoMgrState; | |
| 45 | + | |
| 46 | + [self setNeedsLayout]; | |
| 47 | +} | |
| 48 | + | |
| 49 | +- (UIControlState)state | |
| 50 | +{ | |
| 51 | + return ( [super state] | self.videoMgrState); | |
| 52 | +} | |
| 53 | + | |
| 54 | +/* | |
| 55 | +// Only override drawRect: if you perform custom drawing. | |
| 56 | +// An empty implementation adversely affects performance during animation. | |
| 57 | +- (void)drawRect:(CGRect)rect { | |
| 58 | + // Drawing code | |
| 59 | +} | |
| 60 | +*/ | |
| 61 | + | |
| 62 | +@end | ... | ... |
LiveVideoCloud/Classes/Sections/UGCSections/View/LVCUGCLiveListView.m
| ... | ... | @@ -106,7 +106,7 @@ static NSString *cellId = @"cellId"; |
| 106 | 106 | |
| 107 | 107 | - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { |
| 108 | 108 | |
| 109 | - LVCUGCLivePlayerModel *model = _arrayM[indexPath.row]; | |
| 109 | + LVCUGCLivePlayerModel *model = (LVCUGCLivePlayerModel *)_arrayM[indexPath.row]; | |
| 110 | 110 | // 判断此时直播状态 |
| 111 | 111 | [LVCLiveActivityInfoService getLiveActivityInfoWithActivityId:model.activityId Handler:^(id data, NSError *error) { |
| 112 | 112 | ... | ... |
LiveVideoCloud/ShortVideoData.plist
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | |
| 2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| 3 | +<plist version="1.0"> | |
| 4 | +<array> | |
| 5 | + <array> | |
| 6 | + <dict> | |
| 7 | + <key>image</key> | |
| 8 | + <string>decal_t_0</string> | |
| 9 | + <key>txt</key> | |
| 10 | + <string>nil</string> | |
| 11 | + <key>idx</key> | |
| 12 | + <string>0</string> | |
| 13 | + <key>type</key> | |
| 14 | + <string>0</string> | |
| 15 | + </dict> | |
| 16 | + <dict> | |
| 17 | + <key>image</key> | |
| 18 | + <string>decal_t_1</string> | |
| 19 | + <key>txt</key> | |
| 20 | + <string>nil</string> | |
| 21 | + <key>idx</key> | |
| 22 | + <string>1</string> | |
| 23 | + <key>type</key> | |
| 24 | + <string>0</string> | |
| 25 | + </dict> | |
| 26 | + <dict> | |
| 27 | + <key>image</key> | |
| 28 | + <string>decal_t_2</string> | |
| 29 | + <key>txt</key> | |
| 30 | + <string>nil</string> | |
| 31 | + <key>idx</key> | |
| 32 | + <string>2</string> | |
| 33 | + <key>type</key> | |
| 34 | + <string>0</string> | |
| 35 | + </dict> | |
| 36 | + <dict> | |
| 37 | + <key>image</key> | |
| 38 | + <string>decal_t_3</string> | |
| 39 | + <key>txt</key> | |
| 40 | + <string>nil</string> | |
| 41 | + <key>idx</key> | |
| 42 | + <string>3</string> | |
| 43 | + <key>type</key> | |
| 44 | + <string>0</string> | |
| 45 | + </dict> | |
| 46 | + <dict> | |
| 47 | + <key>image</key> | |
| 48 | + <string>decal_t_4</string> | |
| 49 | + <key>txt</key> | |
| 50 | + <string>nil</string> | |
| 51 | + <key>idx</key> | |
| 52 | + <string>4</string> | |
| 53 | + <key>type</key> | |
| 54 | + <string>0</string> | |
| 55 | + </dict> | |
| 56 | + </array> | |
| 57 | + <array> | |
| 58 | + <dict> | |
| 59 | + <key>image</key> | |
| 60 | + <string>decal_0_icon</string> | |
| 61 | + <key>txt</key> | |
| 62 | + <string>nil</string> | |
| 63 | + <key>idx</key> | |
| 64 | + <string>0</string> | |
| 65 | + <key>type</key> | |
| 66 | + <string>0</string> | |
| 67 | + </dict> | |
| 68 | + <dict> | |
| 69 | + <key>image</key> | |
| 70 | + <string>decal_1_icon</string> | |
| 71 | + <key>txt</key> | |
| 72 | + <string>nil</string> | |
| 73 | + <key>idx</key> | |
| 74 | + <string>1</string> | |
| 75 | + <key>type</key> | |
| 76 | + <string>0</string> | |
| 77 | + </dict> | |
| 78 | + <dict> | |
| 79 | + <key>image</key> | |
| 80 | + <string>decal_2_icon</string> | |
| 81 | + <key>txt</key> | |
| 82 | + <string>nil</string> | |
| 83 | + <key>idx</key> | |
| 84 | + <string>2</string> | |
| 85 | + <key>type</key> | |
| 86 | + <string>0</string> | |
| 87 | + </dict> | |
| 88 | + <dict> | |
| 89 | + <key>image</key> | |
| 90 | + <string>decal_3_icon</string> | |
| 91 | + <key>txt</key> | |
| 92 | + <string>nil</string> | |
| 93 | + <key>idx</key> | |
| 94 | + <string>3</string> | |
| 95 | + <key>type</key> | |
| 96 | + <string>0</string> | |
| 97 | + </dict> | |
| 98 | + <dict> | |
| 99 | + <key>image</key> | |
| 100 | + <string>decal_4_icon</string> | |
| 101 | + <key>txt</key> | |
| 102 | + <string>nil</string> | |
| 103 | + <key>idx</key> | |
| 104 | + <string>4</string> | |
| 105 | + <key>type</key> | |
| 106 | + <string>0</string> | |
| 107 | + </dict> | |
| 108 | + <dict> | |
| 109 | + <key>image</key> | |
| 110 | + <string>decal_5_icon</string> | |
| 111 | + <key>txt</key> | |
| 112 | + <string>nil</string> | |
| 113 | + <key>idx</key> | |
| 114 | + <string>5</string> | |
| 115 | + <key>type</key> | |
| 116 | + <string>0</string> | |
| 117 | + </dict> | |
| 118 | + <dict> | |
| 119 | + <key>image</key> | |
| 120 | + <string>decal_6_icon</string> | |
| 121 | + <key>txt</key> | |
| 122 | + <string>nil</string> | |
| 123 | + <key>idx</key> | |
| 124 | + <string>6</string> | |
| 125 | + <key>type</key> | |
| 126 | + <string>0</string> | |
| 127 | + </dict> | |
| 128 | + <dict> | |
| 129 | + <key>image</key> | |
| 130 | + <string>decal_7_icon</string> | |
| 131 | + <key>txt</key> | |
| 132 | + <string>nil</string> | |
| 133 | + <key>idx</key> | |
| 134 | + <string>7</string> | |
| 135 | + <key>type</key> | |
| 136 | + <string>0</string> | |
| 137 | + </dict> | |
| 138 | + </array> | |
| 139 | + <array> | |
| 140 | + <dict> | |
| 141 | + <key>image</key> | |
| 142 | + <string>closeef</string> | |
| 143 | + <key>txt</key> | |
| 144 | + <string>nil</string> | |
| 145 | + <key>idx</key> | |
| 146 | + <string>0</string> | |
| 147 | + <key>type</key> | |
| 148 | + <string>0</string> | |
| 149 | + </dict> | |
| 150 | + <dict> | |
| 151 | + <key>image</key> | |
| 152 | + <string>man</string> | |
| 153 | + <key>txt</key> | |
| 154 | + <string>大叔</string> | |
| 155 | + <key>idx</key> | |
| 156 | + <string>1</string> | |
| 157 | + <key>type</key> | |
| 158 | + <string>1</string> | |
| 159 | + </dict> | |
| 160 | + <dict> | |
| 161 | + <key>image</key> | |
| 162 | + <string>woman</string> | |
| 163 | + <key>txt</key> | |
| 164 | + <string>萝莉</string> | |
| 165 | + <key>idx</key> | |
| 166 | + <string>2</string> | |
| 167 | + <key>type</key> | |
| 168 | + <string>1</string> | |
| 169 | + </dict> | |
| 170 | + <dict> | |
| 171 | + <key>image</key> | |
| 172 | + <string>solemn</string> | |
| 173 | + <key>txt</key> | |
| 174 | + <string>庄重</string> | |
| 175 | + <key>idx</key> | |
| 176 | + <string>3</string> | |
| 177 | + <key>type</key> | |
| 178 | + <string>1</string> | |
| 179 | + </dict> | |
| 180 | + <dict> | |
| 181 | + <key>image</key> | |
| 182 | + <string>robot</string> | |
| 183 | + <key>txt</key> | |
| 184 | + <string>机器人</string> | |
| 185 | + <key>idx</key> | |
| 186 | + <string>4</string> | |
| 187 | + <key>type</key> | |
| 188 | + <string>1</string> | |
| 189 | + </dict> | |
| 190 | + </array> | |
| 191 | + <array> | |
| 192 | + <dict> | |
| 193 | + <key>image</key> | |
| 194 | + <string>closeef</string> | |
| 195 | + <key>txt</key> | |
| 196 | + <string>nil</string> | |
| 197 | + <key>idx</key> | |
| 198 | + <string>0</string> | |
| 199 | + <key>type</key> | |
| 200 | + <string>1</string> | |
| 201 | + </dict> | |
| 202 | + <dict> | |
| 203 | + <key>image</key> | |
| 204 | + <string>studio</string> | |
| 205 | + <key>txt</key> | |
| 206 | + <string>录音棚</string> | |
| 207 | + <key>idx</key> | |
| 208 | + <string>1</string> | |
| 209 | + <key>type</key> | |
| 210 | + <string>0</string> | |
| 211 | + </dict> | |
| 212 | + <dict> | |
| 213 | + <key>image</key> | |
| 214 | + <string>ktv</string> | |
| 215 | + <key>txt</key> | |
| 216 | + <string>KTV</string> | |
| 217 | + <key>idx</key> | |
| 218 | + <string>2</string> | |
| 219 | + <key>type</key> | |
| 220 | + <string>0</string> | |
| 221 | + </dict> | |
| 222 | + <dict> | |
| 223 | + <key>image</key> | |
| 224 | + <string>woodwing</string> | |
| 225 | + <key>txt</key> | |
| 226 | + <string>小舞台</string> | |
| 227 | + <key>idx</key> | |
| 228 | + <string>4</string> | |
| 229 | + <key>type</key> | |
| 230 | + <string>0</string> | |
| 231 | + </dict> | |
| 232 | + <dict> | |
| 233 | + <key>image</key> | |
| 234 | + <string>concert</string> | |
| 235 | + <key>txt</key> | |
| 236 | + <string>演唱会</string> | |
| 237 | + <key>idx</key> | |
| 238 | + <string>3</string> | |
| 239 | + <key>type</key> | |
| 240 | + <string>0</string> | |
| 241 | + </dict> | |
| 242 | + </array> | |
| 243 | + <array> | |
| 244 | + <dict> | |
| 245 | + <key>path</key> | |
| 246 | + <string>nil</string> | |
| 247 | + <key>txt</key> | |
| 248 | + <string>nil</string> | |
| 249 | + <key>image</key> | |
| 250 | + <string>closeef</string> | |
| 251 | + <key>idx</key> | |
| 252 | + <string>0</string> | |
| 253 | + </dict> | |
| 254 | + <dict> | |
| 255 | + <key>path</key> | |
| 256 | + <string>Idina Menzel - Let It Go</string> | |
| 257 | + <key>txt</key> | |
| 258 | + <string>Frozen</string> | |
| 259 | + <key>image</key> | |
| 260 | + <string>Frozen</string> | |
| 261 | + <key>idx</key> | |
| 262 | + <string>1</string> | |
| 263 | + </dict> | |
| 264 | + <dict> | |
| 265 | + <key>path</key> | |
| 266 | + <string>See You Again</string> | |
| 267 | + <key>txt</key> | |
| 268 | + <string>See You Again</string> | |
| 269 | + <key>image</key> | |
| 270 | + <string>See You Again</string> | |
| 271 | + <key>idx</key> | |
| 272 | + <string>2</string> | |
| 273 | + </dict> | |
| 274 | + <dict> | |
| 275 | + <key>path</key> | |
| 276 | + <string>Zedd,Alessia Cara - Stay</string> | |
| 277 | + <key>txt</key> | |
| 278 | + <string>Stay</string> | |
| 279 | + <key>image</key> | |
| 280 | + <string>Stay</string> | |
| 281 | + <key>idx</key> | |
| 282 | + <string>3</string> | |
| 283 | + </dict> | |
| 284 | + </array> | |
| 285 | +</array> | |
| 286 | +</plist> | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/Contents.json
0 → 100644
LiveVideoCloud/animation.xcassets/ShortVideo/delete.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "删除.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/delete.imageset/删除.png
0 → 100644
6.12 KB
LiveVideoCloud/animation.xcassets/ShortVideo/record.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "filename" : "开吃圆圈.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 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/record.imageset/开吃圆圈.png
0 → 100644
6.32 KB
LiveVideoCloud/animation.xcassets/ShortVideo/revoke.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "删除-2.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/revoke.imageset/删除-2.png
0 → 100644
5.14 KB
LiveVideoCloud/animation.xcassets/ShortVideo/上传.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "上传.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/上传.imageset/上传.png
0 → 100644
1.18 KB
LiveVideoCloud/animation.xcassets/ShortVideo/分钟竖线.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "分钟竖线.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/分钟竖线.imageset/分钟竖线.png
0 → 100644
1.13 KB
LiveVideoCloud/animation.xcassets/ShortVideo/功能.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "filename" : "更多.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 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/功能.imageset/更多.png
0 → 100644
3.06 KB
LiveVideoCloud/animation.xcassets/ShortVideo/叉.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "叉.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/叉.imageset/叉.png
0 → 100644
2.99 KB
LiveVideoCloud/animation.xcassets/ShortVideo/声音.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "声音.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/声音.imageset/声音.png
0 → 100644
3.42 KB
LiveVideoCloud/animation.xcassets/ShortVideo/对勾 (2).imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "对勾 (2).png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/对勾 (2).imageset/对勾 (2).png
0 → 100644
6.81 KB
LiveVideoCloud/animation.xcassets/ShortVideo/对勾.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "对勾.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/对勾.imageset/对勾.png
0 → 100644
2.96 KB
LiveVideoCloud/animation.xcassets/ShortVideo/录制.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "filename" : "录制.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 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/录制.imageset/录制.png
0 → 100644
5.21 KB
LiveVideoCloud/animation.xcassets/ShortVideo/播放.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "播放.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/播放.imageset/播放.png
0 → 100644
2.52 KB
LiveVideoCloud/animation.xcassets/ShortVideo/无声音_线.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "无声音_线.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/无声音_线.imageset/无声音_线.png
0 → 100644
3.18 KB
LiveVideoCloud/animation.xcassets/ShortVideo/相册.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "相册.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/相册.imageset/相册.png
0 → 100644
5.36 KB
LiveVideoCloud/animation.xcassets/ShortVideo/相机.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "相机.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/相机.imageset/相机.png
0 → 100644
3.83 KB
LiveVideoCloud/animation.xcassets/ShortVideo/美颜-2.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "filename" : "美颜-2.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 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/美颜-2.imageset/美颜-2.png
0 → 100644
3.28 KB
LiveVideoCloud/animation.xcassets/ShortVideo/美颜.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "filename" : "美颜.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 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/美颜.imageset/美颜.png
0 → 100644
4.9 KB
LiveVideoCloud/animation.xcassets/ShortVideo/美颜设置-角色.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "美颜设置-角色.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/美颜设置-角色.imageset/美颜设置-角色.png
0 → 100644
4.41 KB
LiveVideoCloud/animation.xcassets/ShortVideo/返回.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "scale" : "1x" | |
| 6 | + }, | |
| 7 | + { | |
| 8 | + "idiom" : "universal", | |
| 9 | + "scale" : "2x" | |
| 10 | + }, | |
| 11 | + { | |
| 12 | + "idiom" : "universal", | |
| 13 | + "filename" : "返回.png", | |
| 14 | + "scale" : "3x" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "info" : { | |
| 18 | + "version" : 1, | |
| 19 | + "author" : "xcode" | |
| 20 | + } | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/返回.imageset/返回.png
0 → 100644
1.98 KB
LiveVideoCloud/animation.xcassets/ShortVideo/闪光灯关闭.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "filename" : "闪光灯关闭.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 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/闪光灯关闭.imageset/闪光灯关闭.png
0 → 100644
3.61 KB
LiveVideoCloud/animation.xcassets/ShortVideo/闪光灯开启.imageset/Contents.json
0 → 100644
| 1 | +{ | |
| 2 | + "images" : [ | |
| 3 | + { | |
| 4 | + "idiom" : "universal", | |
| 5 | + "filename" : "闪光灯打开.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 | 22 | \ No newline at end of file | ... | ... |
LiveVideoCloud/animation.xcassets/ShortVideo/闪光灯开启.imageset/闪光灯打开.png
0 → 100644
3.38 KB