Commit 9a826d8bf75a122a8c727081eb7e9430a060a32c

Authored by zhangxiaowen
1 parent 77bd4605

no message

CNLiveQrCodeModule.podspec
@@ -97,6 +97,9 @@ TODO: 网家家-二维码模块. @@ -97,6 +97,9 @@ TODO: 网家家-二维码模块.
97 # 分类 97 # 分类
98 s.dependency 'CNLiveCategory' 98 s.dependency 'CNLiveCategory'
99 99
  100 + # 自定义控件
  101 + s.dependency 'CNLiveCustomControl'
  102 +
100 s.static_framework = true 103 s.static_framework = true
101 104
102 end 105 end
CNLiveQrCodeModule/Classes/Controller/CNLiveGenerateQrCodeController.m
@@ -14,13 +14,13 @@ @@ -14,13 +14,13 @@
14 #import <Masonry/Masonry.h> 14 #import <Masonry/Masonry.h>
15 #import <SDWebImage/SDWebImage.h> 15 #import <SDWebImage/SDWebImage.h>
16 #import "CNLiveCategory.h" 16 #import "CNLiveCategory.h"
  17 +#import "CNLiveNavigationBar.h"
17 18
18 -#import "CNLiveQrCodeNavigationBar.h"  
19 #import "CNLiveGenerateCodeView.h" 19 #import "CNLiveGenerateCodeView.h"
20 #import "CNLiveScanQrCodeController.h" 20 #import "CNLiveScanQrCodeController.h"
21 21
22 -@interface CNLiveGenerateQrCodeController ()<CNLiveQrCodeNavigationBarDelegate,QMUIAlertControllerDelegate>  
23 -@property (nonatomic, strong) CNLiveQrCodeNavigationBar *navigationBar; 22 +@interface CNLiveGenerateQrCodeController ()<QMUIAlertControllerDelegate>
  23 +@property (nonatomic, strong) CNLiveNavigationBar *navigationBar;
24 @property (nonatomic, strong) UIImageView *bgView; 24 @property (nonatomic, strong) UIImageView *bgView;
25 @property (nonatomic, strong) CNLiveGenerateCodeView *qrCodeView; 25 @property (nonatomic, strong) CNLiveGenerateCodeView *qrCodeView;
26 26
@@ -155,60 +155,6 @@ static const CGFloat timeValue = 1.5; @@ -155,60 +155,6 @@ static const CGFloat timeValue = 1.5;
155 155
156 } 156 }
157 157
158 -- (void)navigationBar:(CNLiveQrCodeNavigationBar *)navigationBar actionEvents:(NSString *)actionEvents{  
159 - if ([actionEvents isEqualToString:@"1"]) {  
160 - [self goBack];  
161 - }  
162 - else if ([actionEvents isEqualToString:@"2"]){  
163 - self.navigationBar.right.userInteractionEnabled = NO;  
164 - __weak typeof(self) weakSelf = self;  
165 - QMUIAlertAction *action1 = [QMUIAlertAction actionWithTitle:@"保存图片" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {  
166 - __strong typeof(weakSelf) strongSelf = weakSelf;  
167 - if(!strongSelf) return ;  
168 - [strongSelf getPHAuthorizationStatus:^{  
169 - UIImage *image = [strongSelf generateImage:strongSelf.qrCodeView];  
170 - [QMUITips showLoadingInView:strongSelf.view];  
171 - [strongSelf saveImage:image];  
172 - [QMUITips hideAllTipsInView:strongSelf.view];  
173 - }];  
174 - self.navigationBar.right.userInteractionEnabled = YES;  
175 -  
176 - }];  
177 - QMUIAlertAction *action2 = [QMUIAlertAction actionWithTitle:@"扫描二维码" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {  
178 - __strong typeof(weakSelf) strongSelf = weakSelf;  
179 - if(!strongSelf) return ;  
180 - CNLiveScanQrCodeController *vc = [[CNLiveScanQrCodeController alloc]init];  
181 - [strongSelf.navigationController pushViewController:vc animated:YES];  
182 -  
183 - self.navigationBar.right.userInteractionEnabled = YES;  
184 - }];  
185 - QMUIAlertAction *cancel = [QMUIAlertAction actionWithTitle:@"取消" style:QMUIAlertActionStyleCancel handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {  
186 - __strong typeof(weakSelf) strongSelf = weakSelf;  
187 - if(!strongSelf) return ;  
188 - self.navigationBar.right.userInteractionEnabled = YES;  
189 -  
190 - }];  
191 -  
192 - QMUIAlertController *alertController = [QMUIAlertController alertControllerWithTitle:@"" message:@"" preferredStyle:QMUIAlertControllerStyleActionSheet];  
193 - alertController.delegate = self;  
194 - [alertController addAction:action1];  
195 - [alertController addAction:action2];  
196 - [alertController addAction:cancel];  
197 -  
198 - NSMutableDictionary *titleAttributs = [[NSMutableDictionary alloc] initWithDictionary:alertController.alertTitleAttributes];  
199 -  
200 - titleAttributs[NSForegroundColorAttributeName] = [UIColor colorWithRed:35/255.0 green:212/255.0 blue:30/255.0 alpha:1.0];  
201 -  
202 - NSMutableDictionary *cancelAttributs = [[NSMutableDictionary alloc] initWithDictionary:alertController.alertTitleAttributes];  
203 - cancelAttributs[NSForegroundColorAttributeName] = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];  
204 -  
205 - action1.buttonAttributes = titleAttributs;  
206 - action2.buttonAttributes = titleAttributs;  
207 - cancel.buttonAttributes = cancelAttributs;  
208 -  
209 - [alertController showWithAnimated:YES];  
210 - }  
211 -}  
212 - (void)didHideAlertController:(QMUIAlertController *)alertController{ 158 - (void)didHideAlertController:(QMUIAlertController *)alertController{
213 self.navigationBar.right.userInteractionEnabled = YES; 159 self.navigationBar.right.userInteractionEnabled = YES;
214 160
@@ -230,13 +176,75 @@ static const CGFloat timeValue = 1.5; @@ -230,13 +176,75 @@ static const CGFloat timeValue = 1.5;
230 } 176 }
231 return _qrCodeView; 177 return _qrCodeView;
232 } 178 }
233 -- (CNLiveQrCodeNavigationBar *)navigationBar { 179 +- (CNLiveNavigationBar *)navigationBar {
234 if (!_navigationBar) { 180 if (!_navigationBar) {
235 - _navigationBar = [[CNLiveQrCodeNavigationBar alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, NavigationContentTop)];  
236 - _navigationBar.delegate = self; 181 + _navigationBar = [CNLiveNavigationBar navigationBar];
  182 + _navigationBar.backgroundColor = [UIColor clearColor];
  183 + UIImage *image1 = [self getImageWithImageName:@"cnlive_back_white_b" bundleName:@"CNLiveCustomControl" targetClass:[CNLiveNavigationBar class]];
  184 + _navigationBar.leftImage = image1;
  185 +
237 _navigationBar.title.text = @"生成二维码"; 186 _navigationBar.title.text = @"生成二维码";
238 - UIImage *image2 = [self getImageWithImageName:@"mine_code_more" bundleName:@"CNLiveQrCodeModule" targetClass:[self class]];  
239 - [_navigationBar.right setImage:[image2 imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal]; 187 + _navigationBar.title.textColor = [UIColor whiteColor];
  188 + _navigationBar.lineHidden = YES;
  189 +
  190 + UIImage *image2 = [self getImageWithImageName:@"cnlive_white_more" bundleName:@"CNLiveCustomControl" targetClass:[CNLiveNavigationBar class]];
  191 + _navigationBar.rightImage = image2;
  192 +
  193 + __weak typeof(self) weakSelf = self;
  194 + _navigationBar.onClickLeftButton = ^{
  195 + __strong typeof(weakSelf) strongSelf = weakSelf;
  196 + if(!strongSelf) return ;
  197 + [strongSelf goBack];
  198 + };
  199 + _navigationBar.onClickRightButton = ^{
  200 + _navigationBar.right.userInteractionEnabled = NO;
  201 + __weak typeof(self) weakSelf = self;
  202 + QMUIAlertAction *action1 = [QMUIAlertAction actionWithTitle:@"保存图片" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {
  203 + __strong typeof(weakSelf) strongSelf = weakSelf;
  204 + if(!strongSelf) return ;
  205 + [strongSelf getPHAuthorizationStatus:^{
  206 + UIImage *image = [strongSelf generateImage:strongSelf.qrCodeView];
  207 + [QMUITips showLoadingInView:strongSelf.view];
  208 + [strongSelf saveImage:image];
  209 + [QMUITips hideAllTipsInView:strongSelf.view];
  210 + }];
  211 + _navigationBar.right.userInteractionEnabled = YES;
  212 +
  213 + }];
  214 + QMUIAlertAction *action2 = [QMUIAlertAction actionWithTitle:@"扫描二维码" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {
  215 + __strong typeof(weakSelf) strongSelf = weakSelf;
  216 + if(!strongSelf) return ;
  217 + CNLiveScanQrCodeController *vc = [[CNLiveScanQrCodeController alloc]init];
  218 + [strongSelf.navigationController pushViewController:vc animated:YES];
  219 +
  220 + _navigationBar.right.userInteractionEnabled = YES;
  221 + }];
  222 + QMUIAlertAction *cancel = [QMUIAlertAction actionWithTitle:@"取消" style:QMUIAlertActionStyleCancel handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {
  223 + __strong typeof(weakSelf) strongSelf = weakSelf;
  224 + if(!strongSelf) return ;
  225 + _navigationBar.right.userInteractionEnabled = YES;
  226 +
  227 + }];
  228 +
  229 + QMUIAlertController *alertController = [QMUIAlertController alertControllerWithTitle:@"" message:@"" preferredStyle:QMUIAlertControllerStyleActionSheet];
  230 + alertController.delegate = self;
  231 + [alertController addAction:action1];
  232 + [alertController addAction:action2];
  233 + [alertController addAction:cancel];
  234 +
  235 + NSMutableDictionary *titleAttributs = [[NSMutableDictionary alloc] initWithDictionary:alertController.alertTitleAttributes];
  236 +
  237 + titleAttributs[NSForegroundColorAttributeName] = [UIColor colorWithRed:35/255.0 green:212/255.0 blue:30/255.0 alpha:1.0];
  238 +
  239 + NSMutableDictionary *cancelAttributs = [[NSMutableDictionary alloc] initWithDictionary:alertController.alertTitleAttributes];
  240 + cancelAttributs[NSForegroundColorAttributeName] = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];
  241 +
  242 + action1.buttonAttributes = titleAttributs;
  243 + action2.buttonAttributes = titleAttributs;
  244 + cancel.buttonAttributes = cancelAttributs;
  245 +
  246 + [alertController showWithAnimated:YES];
  247 + };
240 } 248 }
241 return _navigationBar; 249 return _navigationBar;
242 } 250 }
CNLiveQrCodeModule/Classes/Controller/CNLiveGroupQrCodeController.m
@@ -14,13 +14,12 @@ @@ -14,13 +14,12 @@
14 //#import "CNLiveShareManager.h" 14 //#import "CNLiveShareManager.h"
15 //#import "CNLiveShareToolDefine.h" 15 //#import "CNLiveShareToolDefine.h"
16 #import "CNLiveCategory.h" 16 #import "CNLiveCategory.h"
  17 +#import "CNLiveNavigationBar.h"
17 18
18 -#import "CNLiveQrCodeNavigationBar.h"  
19 #import "CNLiveGroupQrcodeView.h" 19 #import "CNLiveGroupQrcodeView.h"
20 -#import "CNLiveQrCodeNavigationBar.h"  
21 20
22 -@interface CNLiveGroupQrCodeController ()<CNLiveQrCodeNavigationBarDelegate>  
23 -@property (nonatomic, strong) CNLiveQrCodeNavigationBar *navigationBar; 21 +@interface CNLiveGroupQrCodeController ()
  22 +@property (nonatomic, strong) CNLiveNavigationBar *navigationBar;
24 @property (nonatomic, strong) CNLiveGroupQrCodeView *groupView; 23 @property (nonatomic, strong) CNLiveGroupQrCodeView *groupView;
25 @property (nonatomic, strong) UIButton *save; 24 @property (nonatomic, strong) UIButton *save;
26 @property (nonatomic, strong) UIButton *share; 25 @property (nonatomic, strong) UIButton *share;
@@ -74,24 +73,17 @@ static const CGFloat timeValue = 1.5; @@ -74,24 +73,17 @@ static const CGFloat timeValue = 1.5;
74 } 73 }
75 */ 74 */
76 75
77 -#pragma mark - 代理  
78 -- (void)navigationBar:(CNLiveQrCodeNavigationBar *)navigationBar actionEvents:(NSString *)actionEvents{  
79 - if ([actionEvents isEqualToString:@"1"]) {  
80 - [self goBack];  
81 - }  
82 -}  
83 -  
84 #pragma mark - 懒加载 76 #pragma mark - 懒加载
85 -- (CNLiveQrCodeNavigationBar *)navigationBar { 77 +- (CNLiveNavigationBar *)navigationBar {
86 if (!_navigationBar) { 78 if (!_navigationBar) {
87 - _navigationBar = [[CNLiveQrCodeNavigationBar alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, NavigationContentTop)];  
88 - _navigationBar.backgroundColor = [UIColor whiteColor];  
89 - _navigationBar.delegate = self;  
90 - UIImage *image = [self getImageWithImageName:@"code_back_black_b" bundleName:@"CNLiveQrCodeModule" targetClass:[CNLiveGroupQrCodeController class]];  
91 - [_navigationBar.left setImage:[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal]; 79 + _navigationBar = [CNLiveNavigationBar navigationBar];
92 _navigationBar.title.text = @"群二维码名片"; 80 _navigationBar.title.text = @"群二维码名片";
93 - _navigationBar.title.textColor = [UIColor blackColor];  
94 - _navigationBar.right = nil; 81 + __weak typeof(self) weakSelf = self;
  82 + _navigationBar.onClickLeftButton = ^{
  83 + __strong typeof(weakSelf) strongSelf = weakSelf;
  84 + if(!strongSelf) return ;
  85 + [strongSelf goBack];
  86 + };
95 } 87 }
96 return _navigationBar; 88 return _navigationBar;
97 } 89 }
CNLiveQrCodeModule/Classes/Controller/CNLiveMyQrCodeController.m
@@ -14,13 +14,13 @@ @@ -14,13 +14,13 @@
14 #import <Masonry/Masonry.h> 14 #import <Masonry/Masonry.h>
15 #import <SDWebImage/SDWebImage.h> 15 #import <SDWebImage/SDWebImage.h>
16 #import "CNLiveCategory.h" 16 #import "CNLiveCategory.h"
  17 +#import "CNLiveNavigationBar.h"
17 18
18 -#import "CNLiveQrCodeNavigationBar.h"  
19 #import "CNLiveMyQrCodeView.h" 19 #import "CNLiveMyQrCodeView.h"
20 #import "CNLiveScanQrCodeController.h" 20 #import "CNLiveScanQrCodeController.h"
21 21
22 -@interface CNLiveMyQrCodeController ()<CNLiveQrCodeNavigationBarDelegate,QMUIAlertControllerDelegate>  
23 -@property (nonatomic, strong) CNLiveQrCodeNavigationBar *navigationBar; 22 +@interface CNLiveMyQrCodeController ()<QMUIAlertControllerDelegate>
  23 +@property (nonatomic, strong) CNLiveNavigationBar *navigationBar;
24 @property (nonatomic, strong) UIImageView *bgView; 24 @property (nonatomic, strong) UIImageView *bgView;
25 @property (nonatomic, strong) CNLiveMyQrCodeView *qrCodeView; 25 @property (nonatomic, strong) CNLiveMyQrCodeView *qrCodeView;
26 26
@@ -153,73 +153,14 @@ static const CGFloat timeValue = 1.5; @@ -153,73 +153,14 @@ static const CGFloat timeValue = 1.5;
153 153
154 } 154 }
155 155
156 -- (void)navigationBar:(CNLiveQrCodeNavigationBar *)navigationBar actionEvents:(NSString *)actionEvents{  
157 - if ([actionEvents isEqualToString:@"1"]) {  
158 - [self goBack];  
159 - }  
160 - else if ([actionEvents isEqualToString:@"2"]){  
161 - self.navigationBar.right.userInteractionEnabled = NO;  
162 - __weak typeof(self) weakSelf = self;  
163 - QMUIAlertAction *action1 = [QMUIAlertAction actionWithTitle:@"保存图片" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {  
164 - __strong typeof(weakSelf) strongSelf = weakSelf;  
165 - if(!strongSelf) return ;  
166 - [strongSelf getPHAuthorizationStatus:^{  
167 - UIImage *image = [strongSelf generateImage:strongSelf.qrCodeView];  
168 - [QMUITips showLoadingInView:strongSelf.view];  
169 - [strongSelf saveImage:image];  
170 - [QMUITips hideAllTipsInView:strongSelf.view];  
171 - }];  
172 - self.navigationBar.right.userInteractionEnabled = YES;  
173 -  
174 - }];  
175 - QMUIAlertAction *action2 = [QMUIAlertAction actionWithTitle:@"扫描二维码" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {  
176 - __strong typeof(weakSelf) strongSelf = weakSelf;  
177 - if(!strongSelf) return ;  
178 - if(strongSelf.isScanCode){  
179 - [strongSelf.navigationController popViewControllerAnimated:YES];  
180 - }else{  
181 - CNLiveScanQrCodeController *vc = [[CNLiveScanQrCodeController alloc]init];  
182 - vc.isMyCode = YES;  
183 - [strongSelf.navigationController pushViewController:vc animated:YES];  
184 - }  
185 - self.navigationBar.right.userInteractionEnabled = YES;  
186 - }];  
187 - QMUIAlertAction *action3 = [QMUIAlertAction actionWithTitle:@"重置二维码" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {  
188 - __strong typeof(weakSelf) strongSelf = weakSelf;  
189 - if(!strongSelf) return ;  
190 - [strongSelf.qrCodeView generateQRCode:@"reset"];  
191 - self.navigationBar.right.userInteractionEnabled = YES;  
192 -  
193 - }];  
194 - QMUIAlertAction *cancel = [QMUIAlertAction actionWithTitle:@"取消" style:QMUIAlertActionStyleCancel handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {  
195 - __strong typeof(weakSelf) strongSelf = weakSelf;  
196 - if(!strongSelf) return ;  
197 - self.navigationBar.right.userInteractionEnabled = YES;  
198 -  
199 - }];  
200 -  
201 - QMUIAlertController *alertController = [QMUIAlertController alertControllerWithTitle:@"" message:@"" preferredStyle:QMUIAlertControllerStyleActionSheet];  
202 - alertController.delegate = self;  
203 - [alertController addAction:action1];  
204 - [alertController addAction:action2];  
205 - [alertController addAction:action3];  
206 - [alertController addAction:cancel];  
207 -  
208 - NSMutableDictionary *titleAttributs = [[NSMutableDictionary alloc] initWithDictionary:alertController.alertTitleAttributes];  
209 -  
210 - titleAttributs[NSForegroundColorAttributeName] = [UIColor colorWithRed:35/255.0 green:212/255.0 blue:30/255.0 alpha:1.0];  
211 -  
212 - NSMutableDictionary *cancelAttributs = [[NSMutableDictionary alloc] initWithDictionary:alertController.alertTitleAttributes];  
213 - cancelAttributs[NSForegroundColorAttributeName] = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];  
214 -  
215 - action1.buttonAttributes = titleAttributs;  
216 - action2.buttonAttributes = titleAttributs;  
217 - action3.buttonAttributes = titleAttributs;  
218 - cancel.buttonAttributes = cancelAttributs;  
219 -  
220 - [alertController showWithAnimated:YES];  
221 - }  
222 -} 156 +//- (void)navigationBar:(CNLiveQrCodeNavigationBar *)navigationBar actionEvents:(NSString *)actionEvents{
  157 +// if ([actionEvents isEqualToString:@"1"]) {
  158 +// [self goBack];
  159 +// }
  160 +// else if ([actionEvents isEqualToString:@"2"]){
  161 +//
  162 +// }
  163 +//}
223 - (void)didHideAlertController:(QMUIAlertController *)alertController{ 164 - (void)didHideAlertController:(QMUIAlertController *)alertController{
224 self.navigationBar.right.userInteractionEnabled = YES; 165 self.navigationBar.right.userInteractionEnabled = YES;
225 166
@@ -243,13 +184,88 @@ static const CGFloat timeValue = 1.5; @@ -243,13 +184,88 @@ static const CGFloat timeValue = 1.5;
243 } 184 }
244 return _qrCodeView; 185 return _qrCodeView;
245 } 186 }
246 -- (CNLiveQrCodeNavigationBar *)navigationBar { 187 +- (CNLiveNavigationBar *)navigationBar {
247 if (!_navigationBar) { 188 if (!_navigationBar) {
248 - _navigationBar = [[CNLiveQrCodeNavigationBar alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, NavigationContentTop)];  
249 - _navigationBar.delegate = self; 189 + _navigationBar = [CNLiveNavigationBar navigationBar];
  190 + _navigationBar.backgroundColor = [UIColor clearColor];
  191 + UIImage *image1 = [self getImageWithImageName:@"cnlive_back_white_b" bundleName:@"CNLiveCustomControl" targetClass:[CNLiveNavigationBar class]];
  192 + _navigationBar.leftImage = image1;
  193 +
250 _navigationBar.title.text = @"我的二维码"; 194 _navigationBar.title.text = @"我的二维码";
251 - UIImage *image2 = [self getImageWithImageName:@"mine_code_more" bundleName:@"CNLiveQrCodeModule" targetClass:[CNLiveMyQrCodeController class]];  
252 - [_navigationBar.right setImage:[image2 imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal]; 195 + _navigationBar.title.textColor = [UIColor whiteColor];
  196 + _navigationBar.lineHidden = YES;
  197 +
  198 + UIImage *image2 = [self getImageWithImageName:@"cnlive_white_more" bundleName:@"CNLiveCustomControl" targetClass:[CNLiveNavigationBar class]];
  199 + _navigationBar.rightImage = image2;
  200 +
  201 + __weak typeof(self) weakSelf = self;
  202 + _navigationBar.onClickLeftButton = ^{
  203 + __strong typeof(weakSelf) strongSelf = weakSelf;
  204 + if(!strongSelf) return ;
  205 + [strongSelf goBack];
  206 + };
  207 + _navigationBar.onClickRightButton = ^{
  208 + self.navigationBar.right.userInteractionEnabled = NO;
  209 + __weak typeof(self) weakSelf = self;
  210 + QMUIAlertAction *action1 = [QMUIAlertAction actionWithTitle:@"保存图片" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {
  211 + __strong typeof(weakSelf) strongSelf = weakSelf;
  212 + if(!strongSelf) return ;
  213 + [strongSelf getPHAuthorizationStatus:^{
  214 + UIImage *image = [strongSelf generateImage:strongSelf.qrCodeView];
  215 + [QMUITips showLoadingInView:strongSelf.view];
  216 + [strongSelf saveImage:image];
  217 + [QMUITips hideAllTipsInView:strongSelf.view];
  218 + }];
  219 + self.navigationBar.right.userInteractionEnabled = YES;
  220 +
  221 + }];
  222 + QMUIAlertAction *action2 = [QMUIAlertAction actionWithTitle:@"扫描二维码" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {
  223 + __strong typeof(weakSelf) strongSelf = weakSelf;
  224 + if(!strongSelf) return ;
  225 + if(strongSelf.isScanCode){
  226 + [strongSelf.navigationController popViewControllerAnimated:YES];
  227 + }else{
  228 + CNLiveScanQrCodeController *vc = [[CNLiveScanQrCodeController alloc]init];
  229 + vc.isMyCode = YES;
  230 + [strongSelf.navigationController pushViewController:vc animated:YES];
  231 + }
  232 + self.navigationBar.right.userInteractionEnabled = YES;
  233 + }];
  234 + QMUIAlertAction *action3 = [QMUIAlertAction actionWithTitle:@"重置二维码" style:QMUIAlertActionStyleDefault handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {
  235 + __strong typeof(weakSelf) strongSelf = weakSelf;
  236 + if(!strongSelf) return ;
  237 + [strongSelf.qrCodeView generateQRCode:@"reset"];
  238 + self.navigationBar.right.userInteractionEnabled = YES;
  239 +
  240 + }];
  241 + QMUIAlertAction *cancel = [QMUIAlertAction actionWithTitle:@"取消" style:QMUIAlertActionStyleCancel handler:^(__kindof QMUIAlertController *aAlertController, QMUIAlertAction *action) {
  242 + __strong typeof(weakSelf) strongSelf = weakSelf;
  243 + if(!strongSelf) return ;
  244 + self.navigationBar.right.userInteractionEnabled = YES;
  245 +
  246 + }];
  247 +
  248 + QMUIAlertController *alertController = [QMUIAlertController alertControllerWithTitle:@"" message:@"" preferredStyle:QMUIAlertControllerStyleActionSheet];
  249 + alertController.delegate = self;
  250 + [alertController addAction:action1];
  251 + [alertController addAction:action2];
  252 + [alertController addAction:action3];
  253 + [alertController addAction:cancel];
  254 +
  255 + NSMutableDictionary *titleAttributs = [[NSMutableDictionary alloc] initWithDictionary:alertController.alertTitleAttributes];
  256 +
  257 + titleAttributs[NSForegroundColorAttributeName] = [UIColor colorWithRed:35/255.0 green:212/255.0 blue:30/255.0 alpha:1.0];
  258 +
  259 + NSMutableDictionary *cancelAttributs = [[NSMutableDictionary alloc] initWithDictionary:alertController.alertTitleAttributes];
  260 + cancelAttributs[NSForegroundColorAttributeName] = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];
  261 +
  262 + action1.buttonAttributes = titleAttributs;
  263 + action2.buttonAttributes = titleAttributs;
  264 + action3.buttonAttributes = titleAttributs;
  265 + cancel.buttonAttributes = cancelAttributs;
  266 +
  267 + [alertController showWithAnimated:YES];
  268 + };
253 } 269 }
254 return _navigationBar; 270 return _navigationBar;
255 } 271 }
CNLiveQrCodeModule/Classes/Controller/CNLiveScanQrCodeController.m
@@ -15,14 +15,14 @@ @@ -15,14 +15,14 @@
15 #import "CNLiveCategory.h" 15 #import "CNLiveCategory.h"
16 16
17 #import "CNLiveMyQrCodeController.h" 17 #import "CNLiveMyQrCodeController.h"
18 -#import "CNLiveQrCodeNavigationBar.h" 18 +#import "CNLiveNavigationBar.h"
19 19
20 #import "CNLiveScanResultController.h" 20 #import "CNLiveScanResultController.h"
21 21
22 -@interface CNLiveScanQrCodeController ()<CNLiveQrCodeNavigationBarDelegate>{ 22 +@interface CNLiveScanQrCodeController (){
23 SGQRCodeObtain *obtain; 23 SGQRCodeObtain *obtain;
24 } 24 }
25 -@property (nonatomic, strong) CNLiveQrCodeNavigationBar *navigationBar; 25 +@property (nonatomic, strong) CNLiveNavigationBar *navigationBar;
26 @property (nonatomic, strong) SGQRCodeScanView *scanView; 26 @property (nonatomic, strong) SGQRCodeScanView *scanView;
27 @property (nonatomic, strong) UIButton *flashlightBtn;//手电筒 27 @property (nonatomic, strong) UIButton *flashlightBtn;//手电筒
28 @property (nonatomic, assign) BOOL isSelected;//是否打开手电筒 28 @property (nonatomic, assign) BOOL isSelected;//是否打开手电筒
@@ -245,44 +245,55 @@ static const CGFloat timeValue = 1.5; @@ -245,44 +245,55 @@ static const CGFloat timeValue = 1.5;
245 } 245 }
246 246
247 #pragma mark - 选择图片识别二维码 247 #pragma mark - 选择图片识别二维码
248 -- (void)navigationBar:(CNLiveQrCodeNavigationBar *)navigationBar actionEvents:(NSString *)actionEvents{  
249 - if ([actionEvents isEqualToString:@"1"]) {  
250 - [self goBack];  
251 - }else if([actionEvents isEqualToString:@"2"]){  
252 - _navigationBar.right.userInteractionEnabled = NO;  
253 - // 从相册中读取二维码  
254 - [obtain establishAuthorizationQRCodeObtainAlbumWithController:nil];  
255 - if (obtain.isPHAuthorization == YES) {  
256 - [self.scanView removeTimer];  
257 - }  
258 -  
259 - __weak typeof(self) weakSelf = self;  
260 - [obtain setBlockWithQRCodeObtainAlbumDidCancelImagePickerController:^(SGQRCodeObtain *obtain) {  
261 - __strong typeof(weakSelf) strongSelf = weakSelf;  
262 - if(!strongSelf) return ;  
263 - strongSelf.navigationBar.right.userInteractionEnabled = YES;  
264 - }];  
265 - [obtain setBlockWithQRCodeObtainAlbumResult:^(SGQRCodeObtain *obtain, NSString *result) {  
266 - __strong typeof(weakSelf) strongSelf = weakSelf;  
267 - if(!strongSelf) return ;  
268 - strongSelf.navigationBar.right.userInteractionEnabled = YES;  
269 - if (result == nil) {  
270 - NSLog(@"暂未识别出二维码");  
271 - [QMUITips showError:@"暂未识别出二维码" inView:strongSelf.view hideAfterDelay:timeValue];  
272 -  
273 - } else {  
274 - [strongSelf handleResult:result];  
275 - }  
276 - }];  
277 - }  
278 -}  
279 #pragma mark - 懒加载 248 #pragma mark - 懒加载
280 -- (CNLiveQrCodeNavigationBar *)navigationBar { 249 +- (CNLiveNavigationBar *)navigationBar {
281 if (!_navigationBar) { 250 if (!_navigationBar) {
282 - _navigationBar = [[CNLiveQrCodeNavigationBar alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, NavigationContentTop)];  
283 - _navigationBar.delegate = self; 251 + _navigationBar = [CNLiveNavigationBar navigationBar];
  252 + _navigationBar.backgroundColor = [UIColor clearColor];
  253 + UIImage *image = [self getImageWithImageName:@"cnlive_back_white_b" bundleName:@"CNLiveCustomControl" targetClass:[CNLiveNavigationBar class]];
  254 + _navigationBar.leftImage = image;
  255 +
284 _navigationBar.title.text = @"扫一扫"; 256 _navigationBar.title.text = @"扫一扫";
285 - [_navigationBar.right setTitle:@"相册" forState:UIControlStateNormal]; 257 + _navigationBar.title.textColor = [UIColor whiteColor];
  258 +
  259 + _navigationBar.rightTitle = @"相册";
  260 + [_navigationBar.right setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  261 +
  262 + _navigationBar.lineHidden = YES;
  263 +
  264 + __weak typeof(self) weakSelf = self;
  265 + _navigationBar.onClickLeftButton = ^{
  266 + __strong typeof(weakSelf) strongSelf = weakSelf;
  267 + if(!strongSelf) return ;
  268 + [strongSelf goBack];
  269 + };
  270 + _navigationBar.onClickRightButton = ^{
  271 + _navigationBar.right.userInteractionEnabled = NO;
  272 + // 从相册中读取二维码
  273 + [obtain establishAuthorizationQRCodeObtainAlbumWithController:nil];
  274 + if (obtain.isPHAuthorization == YES) {
  275 + [self.scanView removeTimer];
  276 + }
  277 +
  278 + __weak typeof(self) weakSelf = self;
  279 + [obtain setBlockWithQRCodeObtainAlbumDidCancelImagePickerController:^(SGQRCodeObtain *obtain) {
  280 + __strong typeof(weakSelf) strongSelf = weakSelf;
  281 + if(!strongSelf) return ;
  282 + strongSelf.navigationBar.right.userInteractionEnabled = YES;
  283 + }];
  284 + [obtain setBlockWithQRCodeObtainAlbumResult:^(SGQRCodeObtain *obtain, NSString *result) {
  285 + __strong typeof(weakSelf) strongSelf = weakSelf;
  286 + if(!strongSelf) return ;
  287 + strongSelf.navigationBar.right.userInteractionEnabled = YES;
  288 + if (result == nil) {
  289 + NSLog(@"暂未识别出二维码");
  290 + [QMUITips showError:@"暂未识别出二维码" inView:strongSelf.view hideAfterDelay:timeValue];
  291 +
  292 + } else {
  293 + [strongSelf handleResult:result];
  294 + }
  295 + }];
  296 + };
286 } 297 }
287 return _navigationBar; 298 return _navigationBar;
288 } 299 }
CNLiveQrCodeModule/Classes/Controller/CNLiveScanResultController.m
@@ -10,11 +10,11 @@ @@ -10,11 +10,11 @@
10 #import "QMUIKit.h" 10 #import "QMUIKit.h"
11 #import "CNLiveCategory.h" 11 #import "CNLiveCategory.h"
12 12
13 -#import "CNLiveQrCodeNavigationBar.h" 13 +#import "CNLiveNavigationBar.h"
14 #import "CNLiveWebView.h" 14 #import "CNLiveWebView.h"
15 15
16 -@interface CNLiveScanResultController () <CNLiveQrCodeNavigationBarDelegate, CNLiveWebViewDelegate>  
17 -@property (nonatomic, strong) CNLiveQrCodeNavigationBar *navigationBar; 16 +@interface CNLiveScanResultController () <CNLiveWebViewDelegate>
  17 +@property (nonatomic, strong) CNLiveNavigationBar *navigationBar;
18 @property (nonatomic, strong) CNLiveWebView *webView; 18 @property (nonatomic, strong) CNLiveWebView *webView;
19 19
20 @end 20 @end
@@ -50,12 +50,6 @@ @@ -50,12 +50,6 @@
50 } 50 }
51 51
52 #pragma mark - 代理 52 #pragma mark - 代理
53 -- (void)navigationBar:(CNLiveQrCodeNavigationBar *)navigationBar actionEvents:(NSString *)actionEvents{  
54 - if ([actionEvents isEqualToString:@"1"]) {  
55 - [self goBack];  
56 - }  
57 -}  
58 -  
59 - (void)webView:(CNLiveWebView *)webView didFinishLoadWithURL:(NSURL *)url { 53 - (void)webView:(CNLiveWebView *)webView didFinishLoadWithURL:(NSURL *)url {
60 NSLog(@"didFinishLoad"); 54 NSLog(@"didFinishLoad");
61 if(webView.navigationItemTitle.length != 0){ 55 if(webView.navigationItemTitle.length != 0){
@@ -72,16 +66,15 @@ @@ -72,16 +66,15 @@
72 } 66 }
73 67
74 #pragma mark - 懒加载 68 #pragma mark - 懒加载
75 -- (CNLiveQrCodeNavigationBar *)navigationBar { 69 +- (CNLiveNavigationBar *)navigationBar {
76 if (!_navigationBar) { 70 if (!_navigationBar) {
77 - _navigationBar = [[CNLiveQrCodeNavigationBar alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, NavigationContentTop)];  
78 - _navigationBar.delegate = self;  
79 - _navigationBar.title.textColor = [UIColor blackColor];  
80 - _navigationBar.delegate = self;  
81 -  
82 - UIImage *image = [self getImageWithImageName:@"code_back_black_b" bundleName:@"CNLiveQrCodeModule" targetClass:[CNLiveScanResultController class]];  
83 - [_navigationBar.left setImage:[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];  
84 - _navigationBar.right = nil; 71 + _navigationBar = [[CNLiveNavigationBar alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, NavigationContentTop)];
  72 + __weak typeof(self) weakSelf = self;
  73 + _navigationBar.onClickLeftButton = ^{
  74 + __strong typeof(weakSelf) strongSelf = weakSelf;
  75 + if(!strongSelf) return ;
  76 + [strongSelf goBack];
  77 + };
85 78
86 } 79 }
87 return _navigationBar; 80 return _navigationBar;
CNLiveQrCodeModule/Classes/View/CNLiveQrCodeNavigationBar.h deleted 100644 → 0
1 -//  
2 -// CNLiveQrCodeNavigationBar.h  
3 -// CNLiveQrCodeModule  
4 -//  
5 -// Created by 153993236@qq.com on 11/12/2019.  
6 -// Copyright © 2019 153993236@qq.com. All rights reserved.  
7 -//  
8 -  
9 -#import <UIKit/UIKit.h>  
10 -  
11 -NS_ASSUME_NONNULL_BEGIN  
12 -@class CNLiveQrCodeNavigationBar;  
13 -  
14 -@protocol CNLiveQrCodeNavigationBarDelegate <NSObject>  
15 -- (void)navigationBar:(CNLiveQrCodeNavigationBar *)navigationBar actionEvents:(NSString *)actionEvents;  
16 -  
17 -@end  
18 -  
19 -@interface CNLiveQrCodeNavigationBar : UIView  
20 -@property (nonatomic, weak) id<CNLiveQrCodeNavigationBarDelegate> delegate;  
21 -@property (nonatomic, strong) UIView *navView;  
22 -@property (nonatomic, strong) UIButton *left;  
23 -@property (nonatomic, strong) UILabel *title;  
24 -@property (nonatomic, strong, nullable) UIButton *right;  
25 -  
26 -@end  
27 -  
28 -NS_ASSUME_NONNULL_END  
CNLiveQrCodeModule/Classes/View/CNLiveQrCodeNavigationBar.m deleted 100644 → 0
1 -//  
2 -// CNLiveQrCodeNavigationBar.m  
3 -// CNLiveQrCodeModule  
4 -//  
5 -// Created by 153993236@qq.com on 11/12/2019.  
6 -// Copyright © 2019 153993236@qq.com. All rights reserved.  
7 -//  
8 -  
9 -#import "CNLiveQrCodeNavigationBar.h"  
10 -#import "QMUIKit.h"  
11 -#import "CNLiveCategory.h"  
12 -  
13 -@interface CNLiveQrCodeNavigationBar ()  
14 -  
15 -@end  
16 -  
17 -@implementation CNLiveQrCodeNavigationBar  
18 -static const NSInteger margin = 15;  
19 -  
20 -- (instancetype)initWithFrame:(CGRect)frame{  
21 - self = [super initWithFrame:frame];  
22 - if(self){  
23 - self.userInteractionEnabled = YES;  
24 - self.backgroundColor = [UIColor clearColor];  
25 - [self createSubViews];  
26 - }  
27 - return self;  
28 -}  
29 -  
30 -- (void)dealloc {  
31 - NSLog(@"CNLiveQrCodeNavigationBar -- dealloc");  
32 -}  
33 -  
34 -- (void)createSubViews {  
35 - [self addSubview:self.navView];  
36 - [self addSubview:self.left];  
37 - [self addSubview:self.title];  
38 - [self addSubview:self.right];  
39 -}  
40 -  
41 -/*  
42 - // Only override drawRect: if you perform custom drawing.  
43 - // An empty implementation adversely affects performance during animation.  
44 - - (void)drawRect:(CGRect)rect {  
45 - // Drawing code  
46 - }  
47 - */  
48 -  
49 -#pragma mark - 懒加载  
50 -- (UIView *)navView {  
51 - if (!_navView) {  
52 - _navView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, NavigationContentTop)];  
53 - _navView.backgroundColor = [UIColor clearColor];  
54 - }  
55 - return _navView;  
56 -}  
57 -  
58 -- (UIButton *)left {  
59 - if (!_left) {  
60 - _left= [UIButton buttonWithType:UIButtonTypeCustom];  
61 - _left.adjustsImageWhenHighlighted = NO;  
62 - _left.frame = CGRectMake(margin, StatusBarHeight, NavigationBarHeight, NavigationBarHeight);  
63 - UIImage *image = [self getImageWithImageName:@"mine_back_white_b" bundleName:@"CNLiveQrCodeModule" targetClass:[CNLiveQrCodeNavigationBar class]];  
64 - [_left setImage:[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];  
65 - [_left setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];  
66 - [_left addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside];  
67 - }  
68 - return _left;  
69 -}  
70 -  
71 -- (UILabel *)title {  
72 - if (!_title) {  
73 - _title = [[UILabel alloc] initWithFrame:CGRectMake(margin+NavigationBarHeight, StatusBarHeight, SCREEN_WIDTH-2*(margin+NavigationBarHeight), NavigationBarHeight)];  
74 - [_title setFont:[UIFont systemFontOfSize:18]];  
75 - _title.textColor = [UIColor whiteColor];  
76 - _title.textAlignment = NSTextAlignmentCenter;  
77 - }  
78 - return _title;  
79 -}  
80 -  
81 -- (UIButton *)right {  
82 - if (!_right) {  
83 - _right = [UIButton buttonWithType:UIButtonTypeCustom];  
84 - _right.frame = CGRectMake(SCREEN_WIDTH-50-margin, StatusBarHeight, 50, NavigationBarHeight);  
85 - [_right setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight];  
86 - _right.adjustsImageWhenHighlighted = NO;  
87 - _right.titleLabel.font = [UIFont systemFontOfSize:15];  
88 - [_right setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];  
89 - [_right addTarget:self action:@selector(rightDidClicked:) forControlEvents:UIControlEventTouchUpInside];  
90 - }  
91 - return _right;  
92 -}  
93 -  
94 -#pragma mark - 响应方法  
95 -- (void)goBack{  
96 - if (self.delegate && [self.delegate respondsToSelector:@selector(navigationBar:actionEvents:)]) {  
97 - [self.delegate navigationBar:self actionEvents:@"1"];  
98 - }  
99 -}  
100 -- (void)rightDidClicked:(UIButton *)btn{  
101 - if (self.delegate && [self.delegate respondsToSelector:@selector(navigationBar:actionEvents:)]) {  
102 - [self.delegate navigationBar:self actionEvents:@"2"];  
103 - }  
104 -}  
105 -  
106 -@end  
Example/CNLiveQrCodeModule.xcodeproj/project.pbxproj
@@ -375,6 +375,7 @@ @@ -375,6 +375,7 @@
375 "${BUILT_PRODUCTS_DIR}/CNLiveCategory/CNLiveCategory.framework", 375 "${BUILT_PRODUCTS_DIR}/CNLiveCategory/CNLiveCategory.framework",
376 "${BUILT_PRODUCTS_DIR}/CNLiveCommonCategory/CNLiveCommonCategory.framework", 376 "${BUILT_PRODUCTS_DIR}/CNLiveCommonCategory/CNLiveCommonCategory.framework",
377 "${BUILT_PRODUCTS_DIR}/CNLiveCommonClass/CNLiveCommonClass.framework", 377 "${BUILT_PRODUCTS_DIR}/CNLiveCommonClass/CNLiveCommonClass.framework",
  378 + "${BUILT_PRODUCTS_DIR}/CNLiveCustomControl/CNLiveCustomControl.framework",
378 "${BUILT_PRODUCTS_DIR}/CNLiveEnvironment/CNLiveEnvironment.framework", 379 "${BUILT_PRODUCTS_DIR}/CNLiveEnvironment/CNLiveEnvironment.framework",
379 "${BUILT_PRODUCTS_DIR}/CNLiveManager/CNLiveManager.framework", 380 "${BUILT_PRODUCTS_DIR}/CNLiveManager/CNLiveManager.framework",
380 "${BUILT_PRODUCTS_DIR}/CNLiveRequestBastKit/CNLiveRequestBastKit.framework", 381 "${BUILT_PRODUCTS_DIR}/CNLiveRequestBastKit/CNLiveRequestBastKit.framework",
@@ -397,6 +398,7 @@ @@ -397,6 +398,7 @@
397 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCategory.framework", 398 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCategory.framework",
398 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonCategory.framework", 399 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonCategory.framework",
399 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonClass.framework", 400 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonClass.framework",
  401 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCustomControl.framework",
400 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveEnvironment.framework", 402 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveEnvironment.framework",
401 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveManager.framework", 403 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveManager.framework",
402 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveRequestBastKit.framework", 404 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveRequestBastKit.framework",
Example/CNLiveQrCodeModule/CNLIVEAppDelegate.m
@@ -63,7 +63,7 @@ @@ -63,7 +63,7 @@
63 }]; 63 }];
64 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 64 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
65 65
66 - CNLiveMyQrCodeController *vc = [[CNLiveMyQrCodeController alloc] init]; 66 + CNLiveGroupQrCodeController *vc = [[CNLiveGroupQrCodeController alloc] init];
67 // vc.ID = @"http://www.baidu.com"; 67 // vc.ID = @"http://www.baidu.com";
68 UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc]; 68 UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc];
69 69