ShareViewController.m 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. //
  2. // ShareViewController.m
  3. // 千模
  4. //
  5. // Created by Drew on 2018/10/25.
  6. // Copyright © 2018 MUMEI. All rights reserved.
  7. //
  8. #import "ShareViewController.h"
  9. #import "SharePopViewController.h"
  10. #import <WXApi.h>
  11. @interface ShareViewController () <ShareDelegate>
  12. @property(weak, nonatomic) IBOutlet UIView *qrcodeContainer;
  13. @property(weak, nonatomic) IBOutlet UIImageView *img;
  14. @end
  15. @implementation ShareViewController
  16. - (void)viewDidLoad {
  17. [super viewDidLoad];
  18. UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
  19. btn.frame = CGRectMake(0, 0, 40, 40);
  20. UIImage *image = [[UIImage imageNamed:@"backBtn"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
  21. [btn setImage:image forState:UIControlStateNormal];
  22. btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0);
  23. btn.tintColor = [UIColor whiteColor];
  24. [btn addTarget:self action:@selector(backClick) forControlEvents:UIControlEventTouchUpInside];
  25. UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
  26. UIBarButtonItem *nagetiveSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
  27. nagetiveSpacer.width = -12;//这个值可以根据自己需要自己调整
  28. self.navigationItem.leftBarButtonItems = @[nagetiveSpacer, leftItem];
  29. }
  30. - (void)viewDidLayoutSubviews {
  31. [super viewWillLayoutSubviews];
  32. // gradient
  33. CAGradientLayer *gl = [CAGradientLayer layer];
  34. gl.frame = self.view.bounds;
  35. gl.startPoint = CGPointMake(0.5, 0);
  36. gl.endPoint = CGPointMake(0.5, 1);
  37. gl.colors = @[(__bridge id) [UIColor colorWithRed:251 / 255.0 green:92 / 255.0 blue:163 / 255.0 alpha:1].CGColor, (__bridge id) [UIColor colorWithRed:253 / 255.0 green:127 / 255.0 blue:141 / 255.0 alpha:1].CGColor];
  38. gl.locations = @[@(0), @(1.0f)];
  39. [self.view.layer insertSublayer:gl atIndex:0];
  40. self.qrcodeContainer.layer.cornerRadius = 12;
  41. UIImageView *qrcode = [[UIImageView alloc] initWithFrame:CGRectMake(7, 7, self.qrcodeContainer.frame.size.width - 14, self.qrcodeContainer.frame.size.width - 14)];
  42. qrcode.image = [self generateQRCod:shareUrl(@(self.type), [[NSUserDefaults standardUserDefaults] objectForKey:@"qrcode"]) withSize:qrcode.frame.size.width];
  43. [self.qrcodeContainer addSubview:qrcode];
  44. }
  45. - (UIImage *)generateQRCod:(NSString *)content withSize:(CGFloat)size {
  46. // 1.创建过滤器,这里的@"CIQRCodeGenerator"是固定的
  47. CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
  48. // 2.恢复默认设置
  49. [filter setDefaults];
  50. // 3. 给过滤器添加数据
  51. NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding];
  52. // 注意,这里的value必须是NSData类型
  53. [filter setValue:data forKeyPath:@"inputMessage"];
  54. // 4. 生成二维码
  55. CIImage *image = [filter outputImage];
  56. CGRect extent = CGRectIntegral(image.extent);
  57. CGFloat scale = MIN(size / CGRectGetWidth(extent), size / CGRectGetHeight(extent));
  58. // 1. 创建bitmap
  59. size_t width = CGRectGetWidth(extent) * scale;
  60. size_t height = CGRectGetHeight(extent) * scale;
  61. CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();
  62. CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo) kCGImageAlphaNone);
  63. CIContext *context = [CIContext contextWithOptions:nil];
  64. CGImageRef bitmapImage = [context createCGImage:image fromRect:extent];
  65. CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);
  66. CGContextScaleCTM(bitmapRef, scale, scale);
  67. CGContextDrawImage(bitmapRef, extent, bitmapImage);
  68. // 2.保存bitmap图片
  69. CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);
  70. CGContextRelease(bitmapRef);
  71. CGImageRelease(bitmapImage);
  72. return [UIImage imageWithCGImage:scaledImage];
  73. }
  74. - (void)viewWillAppear:(BOOL)animated {
  75. [super viewWillAppear:animated];
  76. self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
  77. [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
  78. [self.navigationController.navigationBar setShadowImage:[UIImage new]];
  79. }
  80. - (void)viewWillDisappear:(BOOL)animated {
  81. [super viewWillDisappear:animated];
  82. [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
  83. [self.navigationController.navigationBar setShadowImage:nil];
  84. self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
  85. }
  86. - (void)backClick {
  87. [self.navigationController popViewControllerAnimated:YES];
  88. }
  89. - (IBAction)share:(id)sender {
  90. SharePopViewController *shareVC = [[SharePopViewController alloc] init];
  91. shareVC.delegate = self;
  92. [self presentViewController:shareVC animated:NO completion:nil];
  93. }
  94. - (void)shareWxSession {
  95. NSString *description = self.type == 1 ? @"找模特、艺人做商演;找空姐、校花做朋友。" : @"更多商演订单,视频面试可收取佣金,小姐妹们快来注册。";
  96. [self shareToWechat:WXSceneSession withTitle:@"千模" description:description url:shareUrl(@(self.type), [[NSUserDefaults standardUserDefaults] objectForKey:@"qrcode"])];
  97. }
  98. - (void)shareWxTimeline {
  99. NSString *description = self.type == 1 ? @"找模特、艺人做商演;找空姐、校花做朋友。" : @"更多商演订单,视频面试可收取佣金,小姐妹们快来注册。";
  100. [self shareToWechat:WXSceneTimeline withTitle:@"千模" description:description url:shareUrl(@(self.type), [[NSUserDefaults standardUserDefaults] objectForKey:@"qrcode"])];
  101. }
  102. - (void)shareToWechat:(enum WXScene)scene withTitle:(NSString *)title description:(NSString *)description url:(NSString *)url {
  103. SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
  104. req.bText = NO;
  105. req.scene = scene;
  106. WXMediaMessage *urlMessage = [WXMediaMessage message];
  107. urlMessage.title = title;
  108. urlMessage.description = description;
  109. [urlMessage setThumbImage:[UIImage imageNamed:@"share_icon"]];
  110. WXWebpageObject *webObj = [WXWebpageObject object];
  111. webObj.webpageUrl = url;
  112. urlMessage.mediaObject = webObj;
  113. req.message = urlMessage;
  114. [WXApi sendReq:req];
  115. }
  116. - (void)setType:(NSInteger)type {
  117. _type = type;
  118. switch (type) {
  119. case 1:
  120. self.img.image = [UIImage imageNamed:@"text_yonghuduan"];
  121. break;
  122. case 2:
  123. self.img.image = [UIImage imageNamed:@"text_moteduan"];
  124. break;
  125. default:
  126. break;
  127. }
  128. }
  129. @end