短视频 SDK iOS(草稿箱)

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

相关产品
短视频 SDK 产品页,含版本规格、价格与购买入口。

一、相关接口类

接口类名 描述
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];

赞 (0)
上一篇 4天前
下一篇 4天前