功能概览
通过草稿箱相关接口,可以实现在短视频编辑过程中撤销和重做,以及导出到草稿箱供下次继续编辑。
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];