更新时间 : 2021-02-22 09:31:12
SXFilter类用来初始化一个滤镜文件,方法类似SXTemplate,通过文件路径初始化。生成实例后可以检查滤镜版本是否能被当前SDK版本支持。
预加载滤镜是根据方向进行添加,目前提供四个方向的预加载,可以通过SXFilterTransitDirection来设置,这一步是为了滤镜切换时的流畅,使用时再加载可能会造成卡顿。
setFilter方法是用来直接替换当前界面上的滤镜,不进行动画过渡。
/**
强制替换一个滤镜
@param filter 需要替换上的滤镜对象
*/
- (void)setFilter:(SXFilter *)filter;
/**
预加载一个滤镜,为动态滤镜切换做准备。
同一时间最多只有一个正在使用的滤镜,同方向上只有一个预加载的滤镜。
@param filter 需要预加载的滤镜
@param direction 预加载的滤镜方向
*/
- (void)preloadFilter:(SXFilter *)filter direction:(SXFilterTransitDirection)direction;
/**
过渡到目前已经预加载的滤镜。
@param progress 滤镜切换进度
@param direction 滤镜切换方向
*/
- (void)transitToFilter:(float)progress direction:(SXFilterTransitDirection)direction;
- (void)setPreloadFilter {
SXFilter *filter1 = [[SXFilter alloc
] initWithFilePath:[[NSBundle mainBundle].resourcePath stringByAppendingPathComponent:@"filter1"]];
[_mTemplate preloadFilter:filter1 direction:SXFilterTransitDirectionRightToLeft];
SXFilter *filter2 = [[SXFilter alloc
] initWithFilePath:[[NSBundle mainBundle].resourcePath stringByAppendingPathComponent:@"filter2"]];
[_mTemplate preloadFilter:filter2 direction:SXFilterTransitDirectionLeftToRight];
SXFilter *filter3 = [[SXFilter alloc
] initWithFilePath:[[NSBundle mainBundle].resourcePath stringByAppendingPathComponent:@"filter3"]];
[_mTemplate preloadFilter:filter3 direction:SXFilterTransitDirectionBottomToTop];
SXFilter *filter4 = [[SXFilter alloc
] initWithFilePath:[[NSBundle mainBundle].resourcePath stringByAppendingPathComponent:@"filter4"]];
[_mTemplate preloadFilter:filter4 direction:SXFilterTransitDirectionTopToBottom];
}
[_mTemplate transitToFilter:progress direction:SXFilterTransitDirectionRightToLeft];
[_mTemplate setFilter:filter1];
SXFilter类用来初始化一个滤镜文件,方法类似SXTemplate,通过文件路径初始化。生成实例后可以检查滤镜版本是否能被当前SDK版本支持。
预加载滤镜是根据方向进行添加,目前提供四个方向的预加载,可以通过SXFilterTransitDirection来设置,这一步是为了滤镜切换时的流畅,使用时再加载可能会造成卡顿。
setFilter方法是用来直接替换当前界面上的滤镜,不进行动画过渡。
/**
强制替换一个滤镜
@param filter 需要替换上的滤镜对象
*/
- (void)setFilter:(SXFilter *)filter;
/**
预加载一个滤镜,为动态滤镜切换做准备。
同一时间最多只有一个正在使用的滤镜,同方向上只有一个预加载的滤镜。
@param filter 需要预加载的滤镜
@param direction 预加载的滤镜方向
*/
- (void)preloadFilter:(SXFilter *)filter direction:(SXFilterTransitDirection)direction;
/**
过渡到目前已经预加载的滤镜。
@param progress 滤镜切换进度
@param direction 滤镜切换方向
*/
- (void)transitToFilter:(float)progress direction:(SXFilterTransitDirection)direction;
- (void)setPreloadFilter {
SXFilter *filter1 = [[SXFilter alloc
] initWithFilePath:[[NSBundle mainBundle].resourcePath stringByAppendingPathComponent:@"filter1"]];
[_mTemplate preloadFilter:filter1 direction:SXFilterTransitDirectionRightToLeft];
SXFilter *filter2 = [[SXFilter alloc
] initWithFilePath:[[NSBundle mainBundle].resourcePath stringByAppendingPathComponent:@"filter2"]];
[_mTemplate preloadFilter:filter2 direction:SXFilterTransitDirectionLeftToRight];
SXFilter *filter3 = [[SXFilter alloc
] initWithFilePath:[[NSBundle mainBundle].resourcePath stringByAppendingPathComponent:@"filter3"]];
[_mTemplate preloadFilter:filter3 direction:SXFilterTransitDirectionBottomToTop];
SXFilter *filter4 = [[SXFilter alloc
] initWithFilePath:[[NSBundle mainBundle].resourcePath stringByAppendingPathComponent:@"filter4"]];
[_mTemplate preloadFilter:filter4 direction:SXFilterTransitDirectionTopToBottom];
}
[_mTemplate transitToFilter:progress direction:SXFilterTransitDirectionRightToLeft];
[_mTemplate setFilter:filter1];