更新时间 : 2023-07-18 09:33:39
滤镜通过SXFilter
添加到相机模板中
以下是SXFilter
的头文件
//滤镜切换的方向
typedef enum : NSUInteger {
SXFilterTransitDirectionRightToLeft = 0,
SXFilterTransitDirectionLeftToRight,
SXFilterTransitDirectionBottomToTop,
SXFilterTransitDirectionTopToBottom,
} SXFilterTransitDirection;
@interface SXFilter : NSObject
//滤镜名称
@property (nonatomic, copy, readonly) NSString *name;
//滤镜版本号
@property (nonatomic, strong, readonly) NSString *version;
//滤镜透明度
@property (nonatomic, assign, readonly) float alpha;
/**
* 初始化一个滤镜实例
* @param filePath 滤镜文件夹路径
* @return 滤镜实例
*/
- (instancetype)initWithFilePath:(NSString *)filePath;
/**
检测滤镜的 version 是否被当前引擎全部支持
@return 1 表示滤镜版本高于引擎版本,不是完整支持, 返回 0, -1 表示可以完整支持
*/
- (int)compareWithCurrentVersion;
@end
代码示例:
添加滤镜
//创建一个滤镜
SXFilter *filter = [[SXFilter alloc] initWithFilePath:@"滤镜地址"];
//添加到模板中
[mTemplate setFilter:filter];
关闭滤镜
//关闭滤镜
SXFilter *filter = [[SXFilter alloc] init];
[mTemplate setFilter:filter];
SXTemplate相机模板常用功能
/**
设置滤镜透明度
@param alpha 滤镜透明度
*/
- (void)setFilterAlpha:(float)alpha;
/**
预加载一个滤镜,为动态滤镜切换做准备。
同一时间最多只有一个正在使用的滤镜,同方向上只有一个预加载的滤镜。
@param filter 需要预加载的滤镜
@param direction 预加载的滤镜方向
*/
- (void)preloadFilter:(SXFilter *)filter direction:(SXFilterTransitDirection)direction;
/**
过渡到目前已经预加载的滤镜。
@param progress 滤镜切换进度
@param direction 滤镜切换方向
*/
- (void)transitToFilter:(float)progress direction:(SXFilterTransitDirection)direction;
//示例代码
//设置滤镜透明度
[mTemplate setFilterAlpha:alpha];
//滤镜预加载
NSMutableArray *filterArray = [NSMutableArray array];
for (int i = 1; i <= 6; i++) {
SXFilter *filter = [[SXFilter alloc
] initWithFilePath:@"滤镜地址"];
[filterArray addObject:filter];
}
[mTemplate preloadFilter:filterArray[currentIndex] direction:SXFilterTransitDirectionLeftToRight];
//滑动切换滤镜 progress滑动进度 direction滑动方向
[mTemplate transitToFilter:fabs(progress) direction:progress > 0 ? SXFilterTransitDirectionLeftToRight : SXFilterTransitDirectionRightToLeft];
滤镜通过SXFilter
添加到相机模板中
以下是SXFilter
的头文件
//滤镜切换的方向
typedef enum : NSUInteger {
SXFilterTransitDirectionRightToLeft = 0,
SXFilterTransitDirectionLeftToRight,
SXFilterTransitDirectionBottomToTop,
SXFilterTransitDirectionTopToBottom,
} SXFilterTransitDirection;
@interface SXFilter : NSObject
//滤镜名称
@property (nonatomic, copy, readonly) NSString *name;
//滤镜版本号
@property (nonatomic, strong, readonly) NSString *version;
//滤镜透明度
@property (nonatomic, assign, readonly) float alpha;
/**
* 初始化一个滤镜实例
* @param filePath 滤镜文件夹路径
* @return 滤镜实例
*/
- (instancetype)initWithFilePath:(NSString *)filePath;
/**
检测滤镜的 version 是否被当前引擎全部支持
@return 1 表示滤镜版本高于引擎版本,不是完整支持, 返回 0, -1 表示可以完整支持
*/
- (int)compareWithCurrentVersion;
@end
代码示例:
添加滤镜
//创建一个滤镜
SXFilter *filter = [[SXFilter alloc] initWithFilePath:@"滤镜地址"];
//添加到模板中
[mTemplate setFilter:filter];
关闭滤镜
//关闭滤镜
SXFilter *filter = [[SXFilter alloc] init];
[mTemplate setFilter:filter];
SXTemplate相机模板常用功能
/**
设置滤镜透明度
@param alpha 滤镜透明度
*/
- (void)setFilterAlpha:(float)alpha;
/**
预加载一个滤镜,为动态滤镜切换做准备。
同一时间最多只有一个正在使用的滤镜,同方向上只有一个预加载的滤镜。
@param filter 需要预加载的滤镜
@param direction 预加载的滤镜方向
*/
- (void)preloadFilter:(SXFilter *)filter direction:(SXFilterTransitDirection)direction;
/**
过渡到目前已经预加载的滤镜。
@param progress 滤镜切换进度
@param direction 滤镜切换方向
*/
- (void)transitToFilter:(float)progress direction:(SXFilterTransitDirection)direction;
//示例代码
//设置滤镜透明度
[mTemplate setFilterAlpha:alpha];
//滤镜预加载
NSMutableArray *filterArray = [NSMutableArray array];
for (int i = 1; i <= 6; i++) {
SXFilter *filter = [[SXFilter alloc
] initWithFilePath:@"滤镜地址"];
[filterArray addObject:filter];
}
[mTemplate preloadFilter:filterArray[currentIndex] direction:SXFilterTransitDirectionLeftToRight];
//滑动切换滤镜 progress滑动进度 direction滑动方向
[mTemplate transitToFilter:fabs(progress) direction:progress > 0 ? SXFilterTransitDirectionLeftToRight : SXFilterTransitDirectionRightToLeft];