ShareViewController.m 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  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. switch (self.type) {
  30. case 1:
  31. [self.img setImage:[UIImage imageNamed:@"text_yonghuduan"]];
  32. break;
  33. case 2:
  34. [self.img setImage:[UIImage imageNamed:@"text_moteduan"]];
  35. break;
  36. default:
  37. [self.img setImage:[UIImage imageNamed:@"text_yonghuduan"]];
  38. break;
  39. }
  40. }
  41. - (void)viewDidLayoutSubviews {
  42. [super viewWillLayoutSubviews];
  43. // gradient
  44. CAGradientLayer *gl = [CAGradientLayer layer];
  45. gl.frame = self.view.bounds;
  46. gl.startPoint = CGPointMake(0.5, 0);
  47. gl.endPoint = CGPointMake(0.5, 1);
  48. 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];
  49. gl.locations = @[@(0), @(1.0f)];
  50. [self.view.layer insertSublayer:gl atIndex:0];
  51. self.qrcodeContainer.layer.cornerRadius = 12;
  52. UIImageView *qrcode = [[UIImageView alloc] initWithFrame:CGRectMake(7, 7, self.qrcodeContainer.frame.size.width - 14, self.qrcodeContainer.frame.size.width - 14)];
  53. qrcode.image = [self generateQRCod:shareUrl(@(self.type), [[NSUserDefaults standardUserDefaults] objectForKey:@"qrcode"]) withSize:qrcode.frame.size.width];
  54. [self.qrcodeContainer addSubview:qrcode];
  55. }
  56. - (UIImage *)generateQRCod:(NSString *)content withSize:(CGFloat)size {
  57. // 1.创建过滤器,这里的@"CIQRCodeGenerator"是固定的
  58. CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
  59. // 2.恢复默认设置
  60. [filter setDefaults];
  61. // 3. 给过滤器添加数据
  62. NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding];
  63. // 注意,这里的value必须是NSData类型
  64. [filter setValue:data forKeyPath:@"inputMessage"];
  65. // 4. 生成二维码
  66. CIImage *image = [filter outputImage];
  67. CGRect extent = CGRectIntegral(image.extent);
  68. CGFloat scale = MIN(size / CGRectGetWidth(extent), size / CGRectGetHeight(extent));
  69. // 1. 创建bitmap
  70. size_t width = CGRectGetWidth(extent) * scale;
  71. size_t height = CGRectGetHeight(extent) * scale;
  72. CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();
  73. CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo) kCGImageAlphaNone);
  74. CIContext *context = [CIContext contextWithOptions:nil];
  75. CGImageRef bitmapImage = [context createCGImage:image fromRect:extent];
  76. CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);
  77. CGContextScaleCTM(bitmapRef, scale, scale);
  78. CGContextDrawImage(bitmapRef, extent, bitmapImage);
  79. // 2.保存bitmap图片
  80. CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);
  81. CGContextRelease(bitmapRef);
  82. CGImageRelease(bitmapImage);
  83. return [UIImage imageWithCGImage:scaledImage];
  84. }
  85. - (void)viewWillAppear:(BOOL)animated {
  86. [super viewWillAppear:animated];
  87. self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
  88. [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
  89. [self.navigationController.navigationBar setShadowImage:[UIImage new]];
  90. }
  91. - (void)viewWillDisappear:(BOOL)animated {
  92. [super viewWillDisappear:animated];
  93. [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
  94. [self.navigationController.navigationBar setShadowImage:nil];
  95. self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
  96. }
  97. - (void)backClick {
  98. [self.navigationController popViewControllerAnimated:YES];
  99. }
  100. - (IBAction)share:(id)sender {
  101. SharePopViewController *shareVC = [[SharePopViewController alloc] init];
  102. shareVC.delegate = self;
  103. [self presentViewController:shareVC animated:NO completion:nil];
  104. }
  105. - (void)shareWxSession {
  106. NSString *description = self.type == 1 ? @"找模特、艺人做商演;找空姐、校花做朋友。" : @"更多商演订单,视频面试可收取佣金,小姐妹们快来注册。";
  107. [self shareToWechat:WXSceneSession withTitle:self.type == 1 ? @"千模通告" : @"千模模特版" description:description url:shareUrl(@(self.type), [[NSUserDefaults standardUserDefaults] objectForKey:@"qrcode"])];
  108. }
  109. - (void)shareWxTimeline {
  110. NSString *description = self.type == 1 ? @"找模特、艺人做商演;找空姐、校花做朋友。" : @"更多商演订单,视频面试可收取佣金,小姐妹们快来注册。";
  111. [self shareToWechat:WXSceneTimeline withTitle:self.type == 1 ? @"千模通告" : @"千模模特版" description:description url:shareUrl(@(self.type), [[NSUserDefaults standardUserDefaults] objectForKey:@"qrcode"])];
  112. }
  113. - (void)shareToWechat:(enum WXScene)scene withTitle:(NSString *)title description:(NSString *)description url:(NSString *)url {
  114. SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
  115. req.bText = NO;
  116. req.scene = scene;
  117. WXMediaMessage *urlMessage = [WXMediaMessage message];
  118. urlMessage.title = title;
  119. urlMessage.description = description;
  120. [urlMessage setThumbImage:[UIImage imageNamed:@"share_icon"]];
  121. WXWebpageObject *webObj = [WXWebpageObject object];
  122. webObj.webpageUrl = url;
  123. urlMessage.mediaObject = webObj;
  124. req.message = urlMessage;
  125. [WXApi sendReq:req];
  126. }
  127. @end