增加换肤功能

This commit is contained in:
启星
2025-08-14 10:07:49 +08:00
parent f6964c1e89
commit 4f9318d98e
8789 changed files with 978530 additions and 2 deletions

View File

@@ -0,0 +1,34 @@
//
// AlbumPicker.h
// TUIChat
//
// Created by yiliangwang on 2024/10/30.
// Copyright © 2024 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef void (^IAlbumPickerCallback)(NSDictionary *param);
@protocol IAlbumPicker <NSObject>
- (void)pickMediaWithCaller:(UIViewController *)caller
originalMediaPicked:(IAlbumPickerCallback)mediaPicked
progressCallback:(IAlbumPickerCallback)progressCallback
finishedCallback:(IAlbumPickerCallback)finishedCallback;
@end
NS_ASSUME_NONNULL_BEGIN
@interface AlbumPicker : NSObject
@property(nonatomic,strong) id<IAlbumPicker> advancedAlbumPicker;
+ (instancetype)sharedInstance;
+ (void)registerAdvancedAlbumPicker:(id<IAlbumPicker>)albumPicker;
+ (void)pickMediaWithCaller:(UIViewController *)caller
originalMediaPicked:(IAlbumPickerCallback)mediaPicked
progressCallback:(IAlbumPickerCallback)progressCallback
finishedCallback:(IAlbumPickerCallback)finishedCallback;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,46 @@
//
// AlbumPicker.m
// TUIChat
//
// Created by yiliangwang on 2024/10/30.
// Copyright © 2024 Tencent. All rights reserved.
//
#import "AlbumPicker.h"
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface AlbumPicker()
@end
@implementation AlbumPicker
+ (instancetype)sharedInstance {
static AlbumPicker *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
+ (void)registerAdvancedAlbumPicker:(id<IAlbumPicker>)albumPicker {
[AlbumPicker sharedInstance].advancedAlbumPicker = albumPicker;
}
+ (void)pickMediaWithCaller:(UIViewController *)caller
originalMediaPicked:(IAlbumPickerCallback)mediaPicked
progressCallback:(IAlbumPickerCallback)progressCallback
finishedCallback:(IAlbumPickerCallback)finishedCallback {
id<IAlbumPicker> albumPicker = nil;
if ([AlbumPicker sharedInstance].advancedAlbumPicker) {
albumPicker = [AlbumPicker sharedInstance].advancedAlbumPicker;
}
if (albumPicker && [albumPicker respondsToSelector:@selector
(pickMediaWithCaller:originalMediaPicked:progressCallback:finishedCallback:)]) {
[albumPicker pickMediaWithCaller:caller originalMediaPicked:mediaPicked progressCallback:progressCallback finishedCallback:finishedCallback];
}
}
@end

View File

@@ -0,0 +1,42 @@
//
// VideoRecorder.h
// TUIChat
//
// Created by yiliangwang on 2024/10/30.
// Copyright © 2024 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef void (^VideoRecorderSuccessBlock)(NSURL *uri);
typedef void (^VideoRecorderFailureBlock)(NSInteger errorCode, NSString *errorMessage);
@protocol IMultimediaRecorder <NSObject>
- (void)recordVideoWithCaller:(UIViewController *)caller
successBlock:(VideoRecorderSuccessBlock)successBlock
failureBlock:(VideoRecorderFailureBlock)failureBlock;
-(void)takePhoneWithCaller:(UIViewController *)caller
successBlock:(VideoRecorderSuccessBlock)successBlock
failureBlock:(VideoRecorderFailureBlock)failureBlock;
@end
@interface MultimediaRecorder : NSObject
@property (nonatomic, strong) id<IMultimediaRecorder> advancedVideoRecorder;
+ (instancetype)sharedInstance;
+ (void)registerAdvancedVideoRecorder:(id<IMultimediaRecorder>)videoRecorder;
- (void)recordVideoWithCaller:(UIViewController *)caller
successBlock:(VideoRecorderSuccessBlock)successBlock
failureBlock:(VideoRecorderFailureBlock)failureBlock;
-(void)takePhoneWithCaller:(UIViewController *)caller
successBlock:(VideoRecorderSuccessBlock)successBlock
failureBlock:(VideoRecorderFailureBlock)failureBlock;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,44 @@
//
// VideoRecorder.m
// TUIChat
//
// Created by yiliangwang on 2024/10/30.
// Copyright © 2024 Tencent. All rights reserved.
//
#import "MultimediaRecorder.h"
@interface MultimediaRecorder ()
@end
@implementation MultimediaRecorder
+ (instancetype)sharedInstance {
static MultimediaRecorder *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
+ (void)registerAdvancedVideoRecorder:(id<IMultimediaRecorder>)videoRecorder {
[MultimediaRecorder sharedInstance].advancedVideoRecorder = videoRecorder;
}
- (void)recordVideoWithCaller:(UIViewController *)caller
successBlock:(VideoRecorderSuccessBlock)successBlock
failureBlock:(VideoRecorderFailureBlock)failureBlock {
id<IMultimediaRecorder> videoRecorder = nil;
if ([MultimediaRecorder sharedInstance].advancedVideoRecorder) {
videoRecorder = [MultimediaRecorder sharedInstance].advancedVideoRecorder;
}
if (videoRecorder && [videoRecorder respondsToSelector:@selector
(recordVideoWithCaller:successBlock:failureBlock:)]) {
[videoRecorder recordVideoWithCaller:caller successBlock:successBlock failureBlock:failureBlock];
}
}
@end