一、相关接口类
| 接口类名 | 描述 |
| ITAVDraftManager | 草稿箱操作管理类。 |
| TAVDraft | 草稿数据模型。 |
| TAVDraftLoadingResult | 草稿加载结果。 |
| TAVDiffResult | 撤销/重做变更结果。 |
| ITAVDraftStateListener | 草稿状态监听协议。 |
/// 获取草稿操作类- (id<ITAVDraftManager>)getDraftManager;
二、设置草稿保存目录
/// 设置草稿存储路径,不设置则使用 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: 草稿对象/// – callback: 加载结果回调- (void)loadDraft:(TAVDraft *)draft onDraftLoadingFinished:(TAVDraftLoadingCallBack)callback;/// 加载回调typedef void(^TAVDraftLoadingCallBack)(TAVDraftLoadingResult *draftLoadingResult);
TAVDraftLoadingResult:
| 成员 | 说明 |
| errors | NSMutableArray<TAVComponentLoadingError *> *,加载过程中的组件错误列表。 |
| – (BOOL)isSuccess | 是否加载成功。 |
| – (NSArray<TAVComponentLoadingError *> *)getErrors | 获取错误列表。 |
八、错误代码
| 错误代码 | 常量名 | 描述 |
| 100 | TAVDraftLoadingErrorSDKInternal | SDK 内部错误。 |
| 101 | TAVDraftLoadingErrorResourceNotFound | 资源不存在。 |
| 102 | TAVDraftLoadingErrorSDKInternalResourceInvalid | 资源格式错误。 |
| -1 | TAVDraftLoadingErrorUnknown | 未知错误。 |
九、重置/开始记录草稿
/// 重置/开始记录草稿- (void)resetDraftRecord;
十、提交记录点
/// 提交一次草稿/// – Parameter tag: 标记值/// – return 提交是否成功- (BOOL)commit:(NSString *)tag;
十一、获取已提交的标记
/// 获取提交的标记值列表,可用于获取用户操作路径- (NSArray<NSString *> *)getCommitTags;
十二、状态检查
/// 当前是否可撤销- (BOOL)canUndo;/// 当前是否可重做- (BOOL)canRedo;
十三、执行操作
/// 撤销/回退- (void)undo:(TAVDraftActionCallBack)callback;/// 重做/前进- (void)redo:(TAVDraftActionCallBack)callback;/// 操作回调typedef void(^TAVDraftActionCallBack)(NSString *tag, TAVDiffResult *diffResult, NSString *errMsg);
十四、状态监听
/// 添加草稿状态监听/// – Parameter listener: 监听者- (void)addDraftStateListener:(id<ITAVDraftStateListener>)listener;/// 删除草稿状态监听- (void)removeDraftStateListener:(id<ITAVDraftStateListener>)listener;
十五、草稿状态监听器
@protocol ITAVDraftStateListener <NSObject>/// 是否可撤销状态改变- (void)onUndoStateChange:(BOOL)canUndo;/// 是否可重做状态改变- (void)onRedoStateChange:(BOOL)canRedo;@end
十六、使用示例
id<ITAVDraftManager> draftManager = [editor getDraftManager];// 设置草稿保存目录[ITAVDraftManager setDraftStorageDir:@"/path/to/drafts/"];// 读取草稿列表NSArray<TAVDraft *> *draftList = [ITAVDraftManager readDraftList];// 加载草稿[draftManager loadDraft:draftList.firstObject onDraftLoadingFinished:^(TAVDraftLoadingResult *result) { if ([result isSuccess]) { // 加载成功 } else { NSArray *errors = [result getErrors]; // 处理错误 }}];// 提交当前状态[draftManager commit:@"auto_save"];// 设置状态监听[draftManager addDraftStateListener:self];#pragma mark – ITAVDraftStateListener- (void)onUndoStateChange:(BOOL)canUndo { // 更新 UI 撤销按钮状态}- (void)onRedoStateChange:(BOOL)canRedo { // 更新 UI 重做按钮状态}// 撤销 / 重做[draftManager undo:^(NSString *tag, TAVDiffResult *diffResult, NSString *errMsg) { // tag 为提交时的标记值}];[draftManager redo:^(NSString *tag, TAVDiffResult *diffResult, NSString *errMsg) {}];// 生成草稿[draftManager generateDraft];// 删除草稿[ITAVDraftManager deleteDraft:draftList.firstObject];