iOS

最近更新时间:2025-12-23 16:43:42

我的收藏

功能概览

通过草稿箱相关接口,可以实现在短视频编辑过程中撤销和重做,以及导出到草稿箱供下次继续编辑。
TAVDraftManager 提供草稿管理功能,包括设置保存目录、读取/删除草稿、生成/加载草稿、撤销/重做操作。

相关接口类

接口类名
描述
ITAVDraftManager
草稿箱操作管理类。

核心方法

设置草稿保存目录

/// 设置草稿存储路径,不设置则使用sdk内置的默认路径
/// - Parameter storageDir: 草稿存储路径
+ (void)setDraftStorageDir:(NSString *)storageDir;

生成草稿

/// 生成草稿到预设定目录,草稿使用到的资源(视频、图片、画中画、bgm、贴纸、滤镜等)会缓存到草稿目录,随着草稿删除一起删除
- (BOOL)generateDraft;
/// 生成草稿到预设定目录,不缓存草稿使用的资源,用户自己管理资源
- (BOOL)generateDraftNoCacheResources;

读取草稿列表

/// 获取草稿列表
+ (NSArray<TAVDraft *> *)readDraftList;

获取当前草稿

/// 获取当前草稿
- (TAVDraft *)getCurrentDraft;

删除草稿

/// 删除指定草稿
+ (void)deleteDraft:(TAVDraft *)draft;

/// 删除所有草稿
+ (void)deleteAllDrafts;

加载草稿

/// 加载草稿
/// - Parameters:
/// - draft: 草稿对象
/// - shouldApply: 是否立即应用草稿效果
- (void)loadDraft:(TAVDraft *)draft onDraftLoadingFinished:(TAVDraftLoadingCallBack)callback;

/// 加载回调
typedef void(^TAVDraftLoadingCallBack)(TAVDraftLoadingResult * draftLoadingResult);

@interface TAVDraftLoadingResult : NSObject
@property (nonatomic, strong) NSMutableArray<TAVComponentLoadingError *> *errors;

- (BOOL)isSuccess;
- (NSArray<TAVComponentLoadingError *> *)getErrors;

@end

错误代码

错误代码
常量名
描述
100
TAVDraftLoadingErrorSDKInternal
SDK 内部错误。
101
TAVDraftLoadingErrorResourceNotFound
资源不存在。
102
TAVDraftLoadingErrorSDKInternalResourceInvalid
资源格式错误。
-1
TAVDraftLoadingErrorUnknown
未知错误。

撤销/重做操作

重置/开始记录草稿

/// 重置/开始记录草稿
- (void)resetDraftRecord;

提交记录点

/// 提交一次草稿
/// - Parameter tag: 标记值
/// - return 提交是否成功
- (BOOL)commit:(NSString *)tag;

状态检查

/// 当前是否可撤销
- (BOOL)canUndo;

/// 当前是否可重做
- (BOOL)canRedo;

执行操作

/// 撤销/回退
- (void)undo:(TAVDraftActionCallBack)callback;

/// 重做/前进
- (void)redo:(TAVDraftActionCallBack)callback;

状态监听

设置状态监听器

/// 添加草稿监听状态
/// - Parameter listener: 监听者
- (void)addDraftStateListener:(id<ITAVDraftStateListener>)listener;

设置组件变更监听

/// 删除草稿监听状态
/// - Parameter listener: 监听者
- (void)removeDraftStateListener:(id<ITAVDraftStateListener>)listener;

回调接口

草稿状态监听器

@protocol ITAVDraftStateListener <NSObject>
/// 是否可撤销状态改变
- (void)onUndoStateChange:(BOOL)canUndo;
/// 是否可重做状态改变
- (void)onRedoStateChange:(BOOL)canRedo;
@end

操作回调

typedef void(^TAVDraftActionCallBack)(NSString *tag,TAVDiffResult *diffResult,NSString *errMsg);

使用示例

id<ITAVDraftManager> manager = [self.editor getDraftManager];
// 读取草稿列表
NSArray *draftList = [manager.class readDraftList];

// 加载草稿
[manager loadDraft:draft onDraftLoadingFinished:^(TAVDraftLoadingResult *draftLoadingResult) {
NSLog(@"load draft reslut : %d",draftLoadingResult.isSuccess);
}];

// 提交当前状态
[[self draftManager] commit:commitTag];

// 设置状态监听
[[self draftManager] addDraftStateListener:self];