MHBeautyAssembleView.m 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. //
  2. // MHBeautyAssembleView.m
  3. //美颜
  4. #import "MHBeautyAssembleView.h"
  5. #import "MHBeautyFaceView.h"
  6. #import "MHFiltersView.h"
  7. #import "MHBeautyView.h"
  8. #import "WNSegmentControl.h"
  9. #import "MHBeautyParams.h"
  10. #import "MHCompleteBeautyView.h"
  11. #import "MHBeautySlider.h"
  12. #import "MHBeautiesModel.h"
  13. #import "MHBottomView.h"
  14. #import <MHBeautySDK/MHSDK.h>
  15. @interface MHBeautyAssembleView()<MHBeautyViewDelegate,MHBeautyFaceViewDelegate,MHFiltersViewDelegate,MHCompleteBeautyViewDelegate>
  16. @property (nonatomic, strong) WNSegmentControl *segmentControl;
  17. @property (nonatomic, strong) MHBeautyView *beautyView;//美颜
  18. @property (nonatomic, strong) MHBeautyFaceView *faceView;//美型
  19. @property (nonatomic, strong) MHCompleteBeautyView *completeView;//一键美颜
  20. @property (nonatomic, strong) MHFiltersView *filtersView;//滤镜
  21. @property (nonatomic, strong) UIView *lineView;
  22. @property (nonatomic, strong) NSMutableArray *viewsArray;
  23. @property (nonatomic, strong) UIView *lastView;
  24. @property (nonatomic, strong) MHBeautySlider *slider;
  25. @property (nonatomic, assign) NSInteger beautyLevel;
  26. @property (nonatomic, assign) NSInteger whiteLevel;
  27. @property (nonatomic, assign) NSInteger ruddinessLevel;
  28. @property (nonatomic, assign) NSInteger brightnessLevel;
  29. @property (nonatomic, assign) MHBeautyAssembleType assembleType;
  30. @property (nonatomic, assign) MHBeautyType beautyType;
  31. @property (nonatomic, assign) MHBeautyFaceType faceType;
  32. @property (nonatomic, strong) MHBeautiesModel *quickBeautyModel;
  33. @property (nonatomic, strong) MHBottomView * bottomView;
  34. @property (nonatomic, strong) UILabel * nameLabel;
  35. @property (nonatomic, assign) int sdkLevelTYpe;///<sdk类型
  36. @end
  37. @implementation MHBeautyAssembleView
  38. - (instancetype)initWithFrame:(CGRect)frame {
  39. self = [super initWithFrame:frame];
  40. if (self) {
  41. self.backgroundColor = [UIColor clearColor];
  42. self.faceType = -1;//默认不选择状态
  43. self.beautyType = -1;//默认不选择状态
  44. self.viewsArray = [NSMutableArray array];
  45. [self addSubview:self.slider];
  46. [self addSubview:self.nameLabel];
  47. }
  48. return self;
  49. }
  50. - (void)configureUI {
  51. NSMutableArray * selectedItem = [MHSDK shareInstance].beautyAssembleArr;
  52. NSMutableArray * nameArr = [NSMutableArray array];
  53. for (int i = 0; i < selectedItem.count; i ++) {
  54. NSDictionary * itemDic = selectedItem[i];
  55. NSString * itemName = itemDic[@"name"];
  56. [nameArr addObject:itemName];
  57. }
  58. if (_segmentControl) {
  59. return;
  60. }
  61. _segmentControl = [[WNSegmentControl alloc] initWithTitles:nameArr];
  62. CGFloat bottom = _slider.frame.origin.y + _slider.frame.size.height;
  63. _segmentControl.frame = CGRectMake(0, bottom+20, window_width, MHStickerSectionHeight);
  64. ///修改MHUI
  65. _segmentControl.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:MHBlackAlpha];
  66. [_segmentControl setTextAttributes:@{NSFontAttributeName: Font_12, NSForegroundColorAttributeName: FontColorBlackNormal}
  67. forState:UIControlStateNormal];
  68. [_segmentControl setTextAttributes:@{NSFontAttributeName: Font_12, NSForegroundColorAttributeName: FontColorSelected}
  69. forState:UIControlStateSelected];
  70. _segmentControl.selectedSegmentIndex = 0;
  71. _segmentControl.widthStyle = WNSegmentedControlWidthStyleFixed;
  72. [_segmentControl addTarget:self action:@selector(switchList:) forControlEvents:UIControlEventValueChanged];
  73. [self addSubview:_segmentControl];
  74. [self addSubview:self.lineView];
  75. NSArray * items = @[@{@"美颜":self.beautyView},@{@"美型":self.faceView},@{@"一键美颜":self.completeView},@{@"滤镜":self.filtersView}];
  76. for (int i = 0; i < selectedItem.count; i ++) {
  77. NSDictionary * itemDic = selectedItem[i];
  78. NSString * itemName = itemDic[@"name"];
  79. for (int j = 0; j < items.count; j ++) {
  80. NSDictionary * itemDic = items[j];
  81. if ([itemDic.allKeys[0] isEqual:itemName]) {
  82. [_viewsArray addObject:itemDic.allValues[0]];
  83. }
  84. }
  85. }
  86. if (_viewsArray.count> 0) {
  87. [self addSubview:_viewsArray[0]];
  88. self.lastView = _viewsArray[0];
  89. }
  90. ///修改MHUI
  91. if (isNeedBottom) {
  92. [self addSubview:self.bottomView];
  93. }
  94. [self.beautyView configureBeautyData:self.beautyArr];
  95. [self.faceView configureFaceData:self.facesArr];
  96. // self.slider.maximumValue = 9;
  97. NSDictionary *indexDic = [[NSUserDefaults standardUserDefaults] objectForKey:kMHBeautyTitle];
  98. if(IsDictionaryWithAnyKeyValue(indexDic)){
  99. NSNumber *index = indexDic.allValues.firstObject;
  100. self.slider.hidden = index.integerValue == 0;
  101. self.nameLabel.hidden = index.integerValue == 0;
  102. NSString *beautKey = [NSString stringWithFormat:@"beauty_%ld",index.integerValue];
  103. NSString *value = [[NSUserDefaults standardUserDefaults] objectForKey:beautKey];
  104. self.nameLabel.text = YZMsg(indexDic.allKeys.firstObject);
  105. [self.slider setValue:value.integerValue animated:YES];
  106. }else{
  107. self.slider.hidden = YES;
  108. self.nameLabel.hidden = YES;
  109. }
  110. if(self.lastView == self.beautyView){
  111. self.slider.maximumValue = 9;
  112. }else{
  113. self.slider.maximumValue = 100;
  114. }
  115. if (self.lastView == self.beautyView) {
  116. self.assembleType = 0;
  117. }else if (self.lastView == self.faceView){
  118. self.assembleType = 1;
  119. }else if (self.lastView == self.completeView){
  120. self.assembleType = 2;
  121. }
  122. }
  123. - (void)configureSlider{
  124. // self.slider.maximumValue = 9;
  125. }
  126. #pragma mark - Action
  127. - (void)switchList:(WNSegmentControl *)segment {
  128. UIView *view = [self.viewsArray objectAtIndex:segment.selectedSegmentIndex];
  129. self.slider.hidden = [view isEqual:self.filtersView];
  130. self.nameLabel.hidden = [view isEqual:self.filtersView];
  131. // self.assembleType = segment.selectedSegmentIndex;
  132. if ([view isEqual:self.beautyView]) {
  133. [self.beautyView configureBeautyData:self.beautyArr];
  134. self.assembleType = 0;
  135. self.slider.maximumValue = 9;
  136. NSDictionary *indexDic = [[NSUserDefaults standardUserDefaults] objectForKey:kMHBeautyTitle];
  137. if(IsDictionaryWithAnyKeyValue(indexDic)){
  138. NSNumber *index = indexDic.allValues.firstObject;
  139. self.slider.hidden = index.integerValue == 0;
  140. self.nameLabel.hidden = index.integerValue == 0;
  141. NSString *beautKey = [NSString stringWithFormat:@"beauty_%ld",index.integerValue];
  142. NSString *value = [[NSUserDefaults standardUserDefaults] objectForKey:beautKey];
  143. self.nameLabel.text = YZMsg(indexDic.allKeys.firstObject);
  144. [self.slider setValue:value.integerValue animated:YES];
  145. }else{
  146. self.slider.hidden = YES;
  147. self.nameLabel.hidden = YES;
  148. }
  149. } else {
  150. self.slider.maximumValue = 100;
  151. }
  152. if ([view isEqual:self.faceView]) {
  153. self.assembleType = 1;
  154. [self.faceView configureFaceData:self.facesArr];
  155. NSDictionary *indexDic = [[NSUserDefaults standardUserDefaults] objectForKey:kMHFaceTitle];
  156. if(IsDictionaryWithAnyKeyValue(indexDic)){
  157. NSNumber *index = indexDic.allValues.firstObject;
  158. self.slider.hidden = index.integerValue == 0;
  159. self.nameLabel.hidden = index.integerValue == 0;
  160. NSString *beautKey = [NSString stringWithFormat:@"face_%ld",index.integerValue];
  161. NSString *value = [[NSUserDefaults standardUserDefaults] objectForKey:beautKey];
  162. self.nameLabel.text = YZMsg(indexDic.allKeys.firstObject);
  163. [self.slider setValue:value.integerValue animated:YES];
  164. }else{
  165. self.slider.hidden = YES;
  166. self.nameLabel.hidden = YES;
  167. }
  168. }
  169. if ([view isEqual:self.completeView]) {
  170. self.assembleType = 2;
  171. if ([[[NSUserDefaults standardUserDefaults] objectForKey:kOneclickBeauty] isKindOfClass:[NSData class]]) {
  172. self.slider.hidden = NO;
  173. self.nameLabel.hidden = NO;
  174. [self configureOneclickDefaultData];
  175. }else{
  176. self.slider.hidden = YES;
  177. self.nameLabel.hidden = YES;
  178. }
  179. }
  180. if (![view isEqual:self.lastView]) {
  181. self.lastView.hidden = YES;
  182. }
  183. if ([view isDescendantOfView:self]) {
  184. view.hidden = NO;
  185. }else{
  186. [self addSubview:view];
  187. }
  188. self.lastView = view;
  189. if (self.lastView == self.beautyView) {
  190. self.assembleType = 0;
  191. }else if (self.lastView == self.faceView){
  192. self.assembleType = 1;
  193. }else if (self.lastView == self.completeView){
  194. self.assembleType = 2;
  195. }
  196. ///修改MHUI
  197. [self bringSubviewToFront:self.bottomView];
  198. }
  199. - (void)configureOneclickDefaultData{
  200. NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kOneclickBeauty];
  201. MHBeautiesModel *lastModel;
  202. NSSet *set = [NSSet setWithObjects:[NSString class],[NSNumber class],[MHBeautiesModel class], nil];
  203. if (data && ![data isKindOfClass:[NSString class]]) {
  204. if (@available(iOS 11.0,*)) {
  205. lastModel = [NSKeyedUnarchiver unarchivedObjectOfClasses:set fromData:data error:nil];
  206. }else{
  207. lastModel = [NSKeyedUnarchiver unarchiveObjectWithData:data];
  208. }
  209. [self.slider setSliderValue:lastModel.defaultValue];
  210. [self.slider setValue:lastModel.defaultValue.integerValue animated:YES];
  211. self.nameLabel.text = lastModel.beautyTitle;
  212. [self handleCompleteEffect:lastModel defaultSliderValue:lastModel.defaultValue.integerValue];
  213. }
  214. }
  215. //slider 滑动修改对应的效果
  216. - (void)handleBeautyAssembleEffectWithValue:(NSInteger)value {
  217. // NSLog(@"====%ld",self.assembleType);
  218. switch (self.assembleType) {
  219. case 0:{
  220. if (self.isTXSDK) {
  221. [self handleBeautyEffectsOfTXWithSliderValue:value];
  222. } else {
  223. [self handleBeautyEffectsWithSliderValue:value];
  224. }
  225. }
  226. break;
  227. case 1:
  228. [self handleFaceEffectsWithSliderValue:value];
  229. break;
  230. case 2:
  231. [self handleQuickBeautyWithSliderValue:value];
  232. break;
  233. default:
  234. break;
  235. }
  236. }
  237. #pragma mark - 底部按钮响应
  238. - (void)cameraAction:(BOOL)isTakePhoto{
  239. NSLog(@"点击了拍照");
  240. if (isTakePhoto) {
  241. if ([self.delegate respondsToSelector:@selector(takePhoto)]) {
  242. [self.delegate takePhoto];
  243. }
  244. }else{
  245. if ([self.delegate respondsToSelector:@selector(clickPackUp)]) {
  246. [self.delegate clickPackUp];
  247. }
  248. }
  249. }
  250. #pragma mark - 美颜-腾讯直播用
  251. - (void)handleBeautyEffectsOfTXWithSliderValue:(NSInteger)value {
  252. switch (self.beautyType) {
  253. case MHBeautyType_Original:{
  254. self.beautyLevel = 0;
  255. self.whiteLevel = 0;
  256. self.ruddinessLevel = 0;
  257. self.brightnessLevel = 50;//默认
  258. }
  259. break;
  260. case MHBeautyType_White:
  261. self.whiteLevel = value;
  262. break;
  263. case MHBeautyType_Mopi:
  264. self.beautyLevel = value;
  265. break;
  266. case MHBeautyType_Ruddiess:
  267. self.ruddinessLevel = value;
  268. break;
  269. case MHBeautyType_Brightness:
  270. self.brightnessLevel = value*100/9.0;
  271. break;
  272. default:
  273. break;
  274. }
  275. // if (self.beautyType != MHBeautyType_Brightness) {
  276. // self.brightnessLevel = 57;
  277. // }
  278. if (self.brightnessLevel > 90){
  279. self.brightnessLevel = 90;
  280. }
  281. if (self.brightnessLevel < 10){
  282. self.brightnessLevel = 10;
  283. }
  284. if ([self.delegate respondsToSelector:@selector(beautyLevel:whitenessLevel:ruddinessLevel: brightnessLevel:)]) {
  285. if(cancelOtherBeauty){
  286. NSString *str = [[NSUserDefaults standardUserDefaults] objectForKey:kMHSelectedQuickBeauty];
  287. if ([str isEqualToString:@"YES"]) {
  288. //2020-07-04 现在相机有默认美颜效果,取消一键美颜时需要恢复默认的美颜效果
  289. [self.delegate beautyLevel:5 whitenessLevel:5 ruddinessLevel:7 brightnessLevel:57];
  290. [self.completeView cancelQuickBeautyEffect:self.quickBeautyModel];
  291. [[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:kMHSelectedQuickBeauty];//保证只执行一次
  292. }
  293. }
  294. [self.delegate beautyLevel:self.beautyLevel whitenessLevel:self.whiteLevel ruddinessLevel:self.ruddinessLevel brightnessLevel:self.brightnessLevel];
  295. }
  296. NSString *beautKey = [NSString stringWithFormat:@"beauty_%ld",(long)self.beautyType];
  297. [[NSUserDefaults standardUserDefaults] setInteger:value forKey:beautKey];
  298. }
  299. #pragma mark - 美颜slider
  300. - (void)handleBeautyEffectsWithSliderValue:(NSInteger)value {
  301. if ([self.delegate respondsToSelector:@selector(handleBeautyWithType:level:)]) {
  302. if(cancelOtherBeauty){
  303. NSString *str = [[NSUserDefaults standardUserDefaults] objectForKey:kMHSelectedQuickBeauty];
  304. if ([str isEqualToString:@"YES"]) {
  305. [self.delegate handleBeautyWithType:0 level:0];//为了取消一键美颜的效果
  306. [self.completeView cancelQuickBeautyEffect:self.quickBeautyModel];
  307. [[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:kMHSelectedQuickBeauty];//保证只执行一次
  308. }
  309. }
  310. if (self.beautyType == MHBeautyType_Brightness) {
  311. [self.delegate handleBeautyWithType:self.beautyType level:value*10];
  312. }else{
  313. [self.delegate handleBeautyWithType:self.beautyType level:value/9.0];
  314. }
  315. }
  316. NSString *beautKey = [NSString stringWithFormat:@"beauty_%ld",(long)self.beautyType];
  317. [[NSUserDefaults standardUserDefaults] setInteger:value forKey:beautKey];
  318. [[NSUserDefaults standardUserDefaults] synchronize];
  319. }
  320. #pragma mark - 美型slider
  321. - (void)handleFaceEffectsWithSliderValue:(NSInteger)value {
  322. if ([self.delegate respondsToSelector:@selector(handleFaceBeautyWithType:sliderValue:)]) {
  323. if(cancelOtherBeauty){
  324. NSString *str = [[NSUserDefaults standardUserDefaults] objectForKey:kMHSelectedQuickBeauty];
  325. if ([str isEqualToString:@"YES"]) {
  326. [self.delegate handleFaceBeautyWithType:0 sliderValue:0];//为了取消一键美颜的效果
  327. [self.completeView cancelQuickBeautyEffect:self.quickBeautyModel];//为了取消一键美颜的效果
  328. [[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:kMHSelectedQuickBeauty];//保证只执行一次
  329. }
  330. }
  331. [self.delegate handleFaceBeautyWithType:self.faceType sliderValue:value];
  332. }
  333. NSString *faceKey = [NSString stringWithFormat:@"face_%ld",(long)self.faceType];
  334. [[NSUserDefaults standardUserDefaults] setInteger:value forKey:faceKey];
  335. [[NSUserDefaults standardUserDefaults] synchronize];
  336. }
  337. #pragma mark - 一键美颜slider
  338. - (void)handleQuickBeautyWithSliderValue:(NSInteger)value {
  339. if ([self.delegate respondsToSelector:@selector(handleQuickBeautyWithSliderValue: quickBeautyModel:)]) {
  340. [self.delegate handleQuickBeautyWithSliderValue:value quickBeautyModel:self.quickBeautyModel];
  341. }
  342. if (isSaveOneclickBeauty) {
  343. if (self.quickBeautyModel) {
  344. self.quickBeautyModel.defaultValue = [NSString stringWithFormat:@"%ld",(long)value];
  345. if (@available(iOS 11.0,*)) {
  346. NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.quickBeautyModel requiringSecureCoding:YES error:nil];
  347. [[NSUserDefaults standardUserDefaults] setObject:data forKey:kOneclickBeauty];
  348. }else{
  349. NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.quickBeautyModel];
  350. [[NSUserDefaults standardUserDefaults] setObject:data forKey:kOneclickBeauty];
  351. }
  352. [[NSUserDefaults standardUserDefaults] synchronize];
  353. }
  354. }
  355. }
  356. #pragma mark - delegate
  357. //美颜
  358. - (void)handleBeautyEffects:(NSInteger)type sliderValue:(NSInteger)value name:(nonnull NSString *)name{
  359. //点击原图时slider隐藏
  360. if (type == 0){
  361. _slider.hidden = YES;
  362. _nameLabel.hidden = YES;
  363. }else{
  364. _slider.hidden = NO;
  365. _nameLabel.hidden = NO;
  366. }
  367. self.beautyType = type;
  368. [self.slider setSliderValue:[NSString stringWithFormat:@"%ld",(long)value]];
  369. [self.slider setValue:(NSInteger)value animated:YES];
  370. self.nameLabel.text = YZMsg(name);
  371. }
  372. //美型
  373. - (void)handleFaceEffects:(NSInteger)type sliderValue:(NSInteger)value name:(nonnull NSString *)name{
  374. if (type == 0){
  375. _slider.hidden = YES;
  376. _nameLabel.hidden = YES;
  377. }else{
  378. _slider.hidden = NO;
  379. _nameLabel.hidden = NO;
  380. }
  381. self.faceType = type;
  382. [self.slider setSliderValue:[NSString stringWithFormat:@"%ld",(long)value]];
  383. [self.slider setValue:(NSInteger)value animated:YES];
  384. self.nameLabel.text = YZMsg(name);
  385. }
  386. //一键美颜
  387. - (void)handleCompleteEffect:(MHBeautiesModel *)model defaultSliderValue:(NSInteger)defaultValue {
  388. if ([model.beautyTitle isEqualToString:@"原图"]){
  389. _slider.hidden = YES;
  390. _nameLabel.hidden = YES;
  391. }else{
  392. _slider.hidden = NO;
  393. _nameLabel.hidden = NO;
  394. }
  395. if ([model.beautyTitle isEqualToString:@"原图"]) {
  396. self.quickBeautyModel = nil;
  397. }
  398. self.quickBeautyModel = model;
  399. if ([self.delegate respondsToSelector:@selector(handleQuickBeautyValue:)]) {
  400. [self.delegate handleQuickBeautyValue:model];
  401. }
  402. if(cancelOtherBeauty){
  403. //取消美颜美型的选中状态
  404. if (self.faceType != -1) {
  405. [self.faceView clearAllFaceEffects];
  406. self.faceType = -1;
  407. }
  408. if (self.beautyType != -1) {
  409. [self.beautyView clearAllBeautyEffects];
  410. self.beautyType = -1;
  411. }
  412. }
  413. _nameLabel.text = YZMsg(model.beautyTitle);
  414. [self.slider setSliderValue:[NSString stringWithFormat:@"%ld",(long)defaultValue]];
  415. [self.slider setValue:defaultValue animated:YES];
  416. }
  417. //滤镜
  418. - (void)handleFiltersEffect:(NSInteger)filterType filterName:(nonnull NSString *)filtetName {
  419. if ([self.delegate respondsToSelector:@selector(handleFiltersEffectWithType: withFilterName:)]) {
  420. [self.delegate handleFiltersEffectWithType:filterType withFilterName:filtetName];
  421. }
  422. }
  423. #pragma mark - lazy
  424. - (MHBeautyView *)beautyView {
  425. if (!_beautyView) {
  426. CGFloat bottom = _lineView.frame.origin.y + _lineView.frame.size.height;
  427. _beautyView = [[MHBeautyView alloc] initWithFrame:CGRectMake(0, bottom, window_width, MHBeautyAssembleViewHeight -bottom - MHBottomViewHeight)];
  428. _beautyView.delegate = self;
  429. }
  430. return _beautyView;
  431. }
  432. ///修改MHUI
  433. - (MHBeautyFaceView *)faceView {
  434. if (!_faceView) {
  435. ///修改MHUI
  436. CGFloat bottom = _lineView.frame.origin.y + _lineView.frame.size.height;
  437. // CGFloat bottom = _segmentControl.frame.origin.y + _segmentControl.frame.size.height;
  438. _faceView = [[MHBeautyFaceView alloc] initWithFrame:CGRectMake(0, bottom, window_width, MHBeautyAssembleViewHeight-bottom-MHBottomViewHeight)];
  439. _faceView.delegate = self;
  440. }
  441. return _faceView;
  442. }
  443. - (MHFiltersView *)filtersView {
  444. if (!_filtersView) {
  445. CGFloat bottom = _lineView.frame.origin.y + _lineView.frame.size.height;
  446. _filtersView = [[MHFiltersView alloc] initWithFrame:CGRectMake(0, bottom, window_width, MHBeautyAssembleViewHeight-bottom-MHBottomViewHeight)];
  447. _filtersView.delegate = self;
  448. }
  449. return _filtersView;
  450. }
  451. ///修改MHUI
  452. - (MHCompleteBeautyView *)completeView {
  453. if (!_completeView) {
  454. ///修改MHUI
  455. CGFloat bottom = _lineView.frame.origin.y + _lineView.frame.size.height;
  456. _completeView = [[MHCompleteBeautyView alloc] initWithFrame:CGRectMake(0, bottom , window_width, MHBeautyAssembleViewHeight-bottom-MHBottomViewHeight)];
  457. _completeView.delegate = self;
  458. }
  459. return _completeView;
  460. }
  461. - (UIView *)lineView {
  462. if (!_lineView) {
  463. CGFloat bottom = _segmentControl.frame.origin.y + _segmentControl.frame.size.height;
  464. _lineView = [[UIView alloc] initWithFrame:CGRectMake(0, bottom, window_width, 0.5)];
  465. _lineView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:MHBlackAlpha];
  466. UIView * view = [[UIView alloc] initWithFrame:_lineView.bounds];
  467. [_lineView addSubview:view];
  468. view.backgroundColor = LineColor;
  469. }
  470. return _lineView;
  471. }
  472. ///修改MHUI
  473. - (MHBottomView*)bottomView{
  474. if (!_bottomView) {
  475. __weak typeof(self) weakSelf = self;
  476. CGFloat bottom = _beautyView.frame.origin.y + _beautyView.frame.size.height;
  477. _bottomView = [[MHBottomView alloc] initWithFrame:CGRectMake(0, bottom, window_width, MHBottomViewHeight)];
  478. _bottomView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
  479. _bottomView.clickBtn = ^(BOOL isTakePhoto) {
  480. [weakSelf cameraAction:isTakePhoto];
  481. };
  482. }
  483. return _bottomView;
  484. }
  485. - (MHBeautySlider *)slider {
  486. if (!_slider) {
  487. _slider = [[MHBeautySlider alloc] initWithFrame:CGRectMake(80, MHSliderwTop, self.frame.size.width - 80*2, MHSliderwHeight)];
  488. _slider.minimumValue = 0;
  489. _slider.maximumValue = 100;
  490. UIImage *minImg = BundleImg(@"wire")
  491. [_slider setMinimumTrackImage:minImg forState:UIControlStateNormal];
  492. UIImage *maxImg = BundleImg(@"wire drk");
  493. [_slider setMaximumTrackImage:maxImg forState:UIControlStateNormal];
  494. UIImage *pointImg = BundleImg(@"sliderButton");
  495. [_slider setThumbImage:pointImg forState:UIControlStateNormal];
  496. _slider.continuous = YES;
  497. __weak typeof(self) weakSelf = self;
  498. _slider.valueChanged = ^(MHBeautySlider * _Nonnull slider) {
  499. [weakSelf handleBeautyAssembleEffectWithValue:slider.value];
  500. weakSelf.slider.sliderValue = [NSString stringWithFormat:@"%ld", (long)slider.value];
  501. };
  502. }
  503. return _slider;
  504. }
  505. - (UILabel *)nameLabel{
  506. if (!_nameLabel) {
  507. _nameLabel = [[UILabel alloc] init];
  508. _nameLabel.frame = CGRectMake(20, MHSliderwTop, 60, MHSliderwHeight);
  509. _nameLabel.textColor = [UIColor whiteColor];
  510. _nameLabel.textAlignment = NSTextAlignmentCenter;
  511. }
  512. return _nameLabel;
  513. }
  514. -(int)sdkLevelTYpe{
  515. return [[MHSDK shareInstance] getSDKLevel];
  516. }
  517. @end