BogoPosterImgView.m 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. //
  2. // BogoPosterImgView.m
  3. // BuguLive
  4. //
  5. // Created by 宋晨光 on 2020/10/23.
  6. // Copyright © 2020 xfg. All rights reserved.
  7. //
  8. #import "BogoPosterImgView.h"
  9. @interface BogoPosterImgView ()
  10. ///头像
  11. @property (nonatomic, weak) UIImageView *headImageView;
  12. ///昵称
  13. @property (nonatomic, weak) UILabel *nameLabel;
  14. @property (nonatomic, weak) UILabel *titleLabel;
  15. ///二维码
  16. @property (nonatomic, weak) UIImageView *erImageView;
  17. @property (nonatomic, weak)UIImageView *rightImgView;
  18. @property (nonatomic, weak)UIImageView *leftImgView;
  19. @property (nonatomic, weak)UILabel *leftLabel;
  20. @property (nonatomic, weak)UILabel *rightLabel;
  21. @property(nonatomic, strong) UIView *bottomView;
  22. @end
  23. @implementation BogoPosterImgView
  24. - (instancetype)initWithFrame:(CGRect)frame{
  25. if (self = [super initWithFrame:frame]) {
  26. [self loadView];
  27. }
  28. return self;
  29. }
  30. - (void)setModel:(ShareModel *)model{
  31. _model = model;
  32. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  33. [parmDict setObject:@"user" forKey:@"ctl"];
  34. [parmDict setObject:@"userinfo" forKey:@"act"];
  35. FWWeakify(self)
  36. [[NetHttpsManager manager] POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  37. {
  38. FWStrongify(self)
  39. if ([responseJson toInt:@"status"] == 1)
  40. {
  41. self.userModel = [userPageModel mj_objectWithKeyValues:[responseJson objectForKey:@"user"]];
  42. [self.headImageView sd_setImageWithURL:[NSURL URLWithString:self.userModel.head_image]];
  43. self.nameLabel.text = self.userModel.nick_name;
  44. self.titleLabel.text = [NSString stringWithFormat:@"ID:%@", self.userModel.user_id];
  45. }else
  46. {
  47. [FanweMessage alertHUD:[responseJson toString:@"error"]];
  48. }
  49. } FailureBlock:^(NSError *error)
  50. {
  51. }];
  52. CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
  53. // 滤镜恢复默认设置
  54. [filter setDefaults];
  55. // 2. 给滤镜添加数据
  56. NSString *string = model.share_url;
  57. NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
  58. [filter setValue:data forKeyPath:@"inputMessage"];
  59. // 3. 生成二维码
  60. self.erImageView.image =
  61. [self createNonInterpolatedUIImageFormCIImage:[self creatQRcodeWithUrlstring:string] withSize:110];
  62. }
  63. - (CIImage *)creatQRcodeWithUrlstring:(NSString *)urlString{
  64. // 1.实例化二维码滤镜
  65. CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
  66. // 2.恢复滤镜的默认属性 (因为滤镜有可能保存上一次的属性)
  67. [filter setDefaults];
  68. // 3.将字符串转换成NSdata
  69. NSData *data = [urlString dataUsingEncoding:NSUTF8StringEncoding];
  70. // 4.通过KVO设置滤镜, 传入data, 将来滤镜就知道要通过传入的数据生成二维码
  71. [filter setValue:data forKey:@"inputMessage"];
  72. // 5.生成二维码
  73. CIImage *outputImage = [filter outputImage];
  74. return outputImage;
  75. }
  76. - (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat) size
  77. {
  78. CGRect extent = CGRectIntegral(image.extent);
  79. CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));
  80. // 1.创建bitmap;
  81. size_t width = CGRectGetWidth(extent) * scale;
  82. size_t height = CGRectGetHeight(extent) * scale;
  83. CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();
  84. CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);
  85. CIContext *context = [CIContext contextWithOptions:nil];
  86. CGImageRef bitmapImage = [context createCGImage:image fromRect:extent];
  87. CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);
  88. CGContextScaleCTM(bitmapRef, scale, scale);
  89. CGContextDrawImage(bitmapRef, extent, bitmapImage);
  90. // 2.保存bitmap到图片
  91. CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);
  92. CGContextRelease(bitmapRef);
  93. CGImageRelease(bitmapImage);
  94. return [UIImage imageWithCGImage:scaledImage];
  95. }
  96. #pragma mark - # Life Cycle
  97. - (void)loadView {
  98. self.backImageView=[UIImageView new];
  99. self.backImageView.image=[UIImage imageNamed:@"erweimafenxiang_bac"];
  100. self.backImageView.backgroundColor = kWhiteColor;
  101. [self addSubview:self.backImageView];
  102. self.bottomView = [UIView new];
  103. self.bottomView.backgroundColor = [UIColor colorWithHexString:@"#F4F4F4"];
  104. [self.backImageView addSubview:self.bottomView];
  105. UIImageView *rightImgView=[UIImageView new];
  106. rightImgView.image=[UIImage imageNamed:@"bogo_share_phone"];
  107. rightImgView.backgroundColor = kClearColor;
  108. self.rightImgView=rightImgView;
  109. UIImageView *leftImgView = [UIImageView new];
  110. leftImgView.image=[UIImage imageNamed:@"bogo_share_save"];
  111. leftImgView.backgroundColor = kClearColor;
  112. self.leftImgView = leftImgView;
  113. UILabel *leftLabel = [UILabel new];
  114. leftLabel.text = ASLocalizedString(@"保存图片\n到相册");
  115. leftLabel.textColor = [UIColor colorWithHexString:@"#AAAAAA"];
  116. leftLabel.font = [UIFont systemFontOfSize:10];
  117. leftLabel.numberOfLines = 0;
  118. _leftLabel = leftLabel;
  119. UILabel *rightLabel = [UILabel new];
  120. rightLabel.text = ASLocalizedString(@"打开711Live\n立即看到");
  121. rightLabel.textColor = [UIColor colorWithHexString:@"#AAAAAA"];
  122. rightLabel.font = [UIFont systemFontOfSize:10];
  123. rightLabel.numberOfLines = 0;
  124. _rightLabel = rightLabel;
  125. [self.bottomView addSubview:leftLabel];
  126. [self.bottomView addSubview:rightLabel];
  127. [self.bottomView addSubview:leftImgView];
  128. [self.bottomView addSubview:rightImgView];
  129. UIImageView *headImageView = [UIImageView new];
  130. // headImageView.image=emptyimage;
  131. headImageView.backgroundColor = kYellowColor;
  132. [self.backImageView addSubview:headImageView];
  133. headImageView.contentMode=UIViewContentModeScaleAspectFill;
  134. headImageView.clipsToBounds = YES;
  135. // headImageView.layer.borderWidth=3;
  136. // headImageView.layer.borderColor=RGB(153, 153, 153).CGColor;
  137. self.headImageView=headImageView;
  138. UILabel *nameLabel = [UILabel new];
  139. nameLabel.textColor = [UIColor colorWithHexString:@"#777777"];
  140. nameLabel.font = [UIFont systemFontOfSize:16];
  141. nameLabel.textAlignment = NSTextAlignmentCenter;
  142. [self.backImageView addSubview:nameLabel];
  143. self.nameLabel = nameLabel;
  144. UILabel *titleLabel = [UILabel new];
  145. titleLabel.textColor = [UIColor colorWithHexString:@"#777777"];
  146. titleLabel.font = [UIFont systemFontOfSize:12];
  147. titleLabel.textAlignment = NSTextAlignmentCenter;
  148. [self.backImageView addSubview:titleLabel];
  149. self.titleLabel=titleLabel;
  150. UIImageView *erImageView = [[UIImageView alloc]init];
  151. erImageView.backgroundColor = kBlueColor;
  152. [self.headImageView addSubview:erImageView];
  153. self.erImageView = erImageView;
  154. erImageView.userInteractionEnabled=YES;
  155. UILongPressGestureRecognizer *longPress=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(dealLongPress:)];
  156. [erImageView addGestureRecognizer:longPress];
  157. #pragma mark - # Private Methods
  158. [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
  159. make.edges.mas_equalTo(self);
  160. }];
  161. }
  162. #pragma mark->长按识别二维码
  163. -(void)dealLongPress:(UIGestureRecognizer*)pressSender{
  164. NSString *content = @"" ;
  165. //取出选中的图片
  166. UIImageView*tempImageView=(UIImageView*)pressSender.view;
  167. if(tempImageView.image){
  168. UIImage *pickImage =tempImageView.image;
  169. NSData *imageData = UIImagePNGRepresentation(pickImage);
  170. CIImage *ciImage = [CIImage imageWithData:imageData];
  171. //创建探测器
  172. CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{CIDetectorAccuracy: CIDetectorAccuracyLow}];
  173. NSArray *feature = [detector featuresInImage:ciImage];
  174. //取出探测到的数据
  175. for (CIQRCodeFeature *result in feature) {
  176. content = result.messageString;
  177. [[UIApplication sharedApplication] openURL: [NSURL URLWithString:content] options: @{} completionHandler: nil];
  178. }
  179. //进行处理(音效、网址分析、页面跳转等)
  180. }
  181. }
  182. - (void)setIs_Small:(BOOL)is_Small{
  183. _is_Small=is_Small;
  184. if (is_Small==YES) {
  185. self.nameLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium];
  186. self.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium];
  187. self.leftLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium];
  188. self.rightLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium];
  189. [self.headImageView mas_makeConstraints:^(MASConstraintMaker *make) {
  190. make.width.height.mas_equalTo(145);
  191. make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(15);
  192. make.centerX.mas_equalTo(self);
  193. }];
  194. self.headImageView.layer.cornerRadius = 8;
  195. self.headImageView.layer.masksToBounds = YES;
  196. [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  197. make.height.mas_equalTo(22);
  198. make.top.mas_equalTo(15);
  199. make.centerX.mas_equalTo(self.backImageView);
  200. // make.left.mas_equalTo(self.headImageView);
  201. }];
  202. [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  203. make.top.mas_equalTo(self.nameLabel.mas_bottom).mas_offset(5);
  204. // make.left.mas_equalTo(self.headImageView);
  205. make.centerX.mas_equalTo(self.backImageView);
  206. make.width.mas_equalTo(145);
  207. }];
  208. [self.erImageView mas_makeConstraints:^(MASConstraintMaker *make) {
  209. make.edges.mas_equalTo(self.headImageView);
  210. }];
  211. [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) {
  212. make.left.right.bottom.mas_equalTo(0);
  213. make.height.mas_equalTo(54);
  214. }];
  215. [self.leftImgView mas_makeConstraints:^(MASConstraintMaker *make) {
  216. make.left.mas_equalTo(20);
  217. make.centerY.mas_equalTo(self.bottomView);
  218. make.width.height.mas_equalTo(20);
  219. }];
  220. [self.leftLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  221. make.centerY.mas_equalTo(self.bottomView);
  222. make.left.mas_equalTo(self.leftImgView.mas_right).mas_offset(10);
  223. make.width.mas_equalTo(45);
  224. make.height.mas_equalTo(35);
  225. }];
  226. [self.rightImgView mas_makeConstraints:^(MASConstraintMaker *make) {
  227. make.left.mas_equalTo(self.leftLabel.mas_right).mas_offset(60);
  228. make.centerY.mas_equalTo(self.bottomView);
  229. make.width.mas_equalTo(15);
  230. make.height.mas_equalTo(22);
  231. }];
  232. [self.rightLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  233. make.centerY.mas_equalTo(self.bottomView);
  234. make.left.mas_equalTo(self.rightImgView.mas_right).mas_offset(10);
  235. make.width.mas_equalTo(80);
  236. make.height.mas_equalTo(35);
  237. }];
  238. self.layer.cornerRadius = 8;
  239. self.layer.masksToBounds = YES;
  240. }else{
  241. self.nameLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium];
  242. self.titleLabel.font = [UIFont systemFontOfSize:17 weight:UIFontWeightMedium];
  243. self.leftLabel.font = [UIFont systemFontOfSize:15.88 weight:UIFontWeightMedium];
  244. [self.headImageView mas_makeConstraints:^(MASConstraintMaker *make) {
  245. make.width.height.mas_equalTo(250);
  246. make.top.mas_equalTo(132-20+kStatusBarHeight);
  247. make.centerX.mas_equalTo(self);
  248. }];
  249. self.headImageView.layer.cornerRadius = 8;
  250. self.headImageView.layer.masksToBounds = YES;
  251. [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  252. make.height.mas_equalTo(20);
  253. make.top.mas_equalTo(self.headImageView.mas_bottom).mas_offset(30);
  254. make.left.mas_equalTo(60);
  255. }];
  256. [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  257. make.top.mas_equalTo(self.nameLabel.mas_bottom).mas_offset(15);
  258. make.left.mas_equalTo(60);
  259. make.right.mas_equalTo(-60);
  260. }];
  261. [self.erImageView mas_makeConstraints:^(MASConstraintMaker *make) {
  262. make.left.mas_equalTo(85);
  263. make.width.height.mas_equalTo(78);
  264. make.bottom.mas_equalTo(-45-49);
  265. }];
  266. [self.leftLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  267. make.centerY.mas_equalTo(self.erImageView);
  268. // make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(90);
  269. make.left.mas_equalTo(180);
  270. make.right.mas_equalTo(self.headImageView.mas_right);
  271. }];
  272. }
  273. }
  274. @end