多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
 MHUI是开源的,可参考选用。使用MHUI方法如下: * 在直播或者视频页面中添加美颜功能 ``` #import "MHMeiyanMenusView.h" #import <MHBeautySDK/MHBeautyManager.h> #import "MHBeautyParams.h" ``` l添加代理并声明属性 ``` MHMeiyanMenusViewDelegate @property(nonatomic, strong)MHMeiyanMenusView *menusView; @property(nonatomic, strong)MHBeautyManager *beautyManager; ``` l初始化美颜菜单页面,根据具体需求进行初始化。首先初始化美颜管理器 ``` - (MHBeautyManager *)beautyManager { if (!_beautyManager) {         _beautyManager = [[MHBeautyManager alloc] init];     } return _beautyManager; } ``` l初始化美颜菜单,根据具体用户交互进行初始化: ``` ///@param frame frame ///@param superView所要添加到的视图 ///@param delegate 代理 ///@param manager  美颜管理器,完成初始化后传入 ///@param isTx是否需要实现腾讯直播SDK美颜,YES:是,需要实现腾讯的美颜方法,具体可参考说明文档。NO:其他直播SDK,走美狐的美颜方法,不需要单独去处理。 - (instancetype)initWithFrame:(CGRect)frame superView:(UIView*)superView delegate:(id)delegatebeautyManager:(MHBeautyManager*)manager isTXSDK:(BOOL)isTx; ``` 比如,所用直播SDK为腾讯SDK,需要实现腾讯的美颜方法,则isTXSDK传入YES,初始化方法如下: ``` - (MHMeiyanMenusView *)menusView { if (!_menusView) {         _menusView = [[MHMeiyanMenusView alloc] initWithFrame:CGRectMake(0, window_height- MHMeiyanMenuHeight- BottomIndicatorHeight, window_width, MHMeiyanMenuHeight) superView:self.viewdelegate:self beautyManager:self.beautyManagerisTXSDK:YES];     } return _menusView; } ``` 点击美颜按钮等操作来展示美颜页面,可以调用下面的方法: ``` [self.menusView showMenuView:YES]; ``` 美颜菜单的隐藏,则可以在控制器的touchesBegan 方法中调用上面的方法。示例代码: ``` - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ if (self.menusView.isShow) { [self.menusViewshowMenuView:NO]; if (![self.menusView isDescendantOfView:self.view]) { // _preFrontView.hidden = NO;页面上其他控件显示,根据自己的项目完善         }     } } ``` 如果不想隐藏美颜菜单,可以在touchesBegan方法中调用 ``` [self.menusView showMenuView:YES]; ``` 只用这一句就可以。美颜菜单会一直显示在页面上。 如果项目中有需求是设置默认美颜美型效果,则可以完成美颜页面等初始化之后,调用下面的方法。具体默认数值要在这个方法中完善。详情请看MHMeiyanMenusView.m 文件中对该方法的使用说明。 ``` - (void)setupDefaultBeautyAndFaceValueWithIsTX:(BOOL)isTX; ``` 在渲染方法中调用,要设置标志符保证该方法只走一次,不然耗内存,比如在腾讯代理方法中: ``` - (GLuint)onPreProcessTexture:(GLuint)texture width:(CGFloat)width height:(CGFloat)height { [self.beautyManager processWithTexture:texture width:width height:height]; if (!self.isSetDefaultValue) { [self.menusView setupDefaultBeautyAndFaceValueWithIsTX:YES]; self.isSetDefaultValue= YES;     } return texture; } ``` l渲染结束,要释放渲染资源,否则会造成内存泄漏 。 ``` - (void)dealloc { if (_beautyManager) {         [_beautyManager destroy]; _beautyManager = nil;     } if (_menusView) { [_menusView removeFromSuperview]; } } ```