ShareViewController.m 6.1 KB

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