| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- //
- // ShareViewController.m
- // 千模
- //
- // Created by Drew on 2018/10/25.
- // Copyright © 2018 MUMEI. All rights reserved.
- //
- #import "ShareViewController.h"
- #import "SharePopViewController.h"
- @interface ShareViewController ()
- @property (weak, nonatomic) IBOutlet UIView *qrcodeContainer;
- @end
- @implementation ShareViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
- btn.frame = CGRectMake(0, 0, 40, 40);
- UIImage *image = [[UIImage imageNamed:@"backBtn"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
- [btn setImage:image forState:UIControlStateNormal];
- btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0);
- btn.tintColor = [UIColor whiteColor];
- [btn addTarget:self action:@selector(backClick) forControlEvents:UIControlEventTouchUpInside];
- UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
- UIBarButtonItem *nagetiveSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
- nagetiveSpacer.width = -12;//这个值可以根据自己需要自己调整
- self.navigationItem.leftBarButtonItems = @[nagetiveSpacer, leftItem];
- }
- - (void)viewDidLayoutSubviews {
- [super viewWillLayoutSubviews];
-
- // gradient
- CAGradientLayer *gl = [CAGradientLayer layer];
- gl.frame = self.view.bounds;
- gl.startPoint = CGPointMake(0.5, 0);
- gl.endPoint = CGPointMake(0.5, 1);
- 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];
- gl.locations = @[@(0), @(1.0f)];
- [self.view.layer insertSublayer:gl atIndex:0];
- self.qrcodeContainer.layer.cornerRadius = 12;
-
- UIImageView *qrcode = [[UIImageView alloc] initWithFrame:CGRectMake(7, 7, self.qrcodeContainer.frame.size.width - 14, self.qrcodeContainer.frame.size.width - 14)];
- qrcode.image = [self generateQRCod:shareUrl(@(self.type), [[NSUserDefaults standardUserDefaults] objectForKey:@"qrcode"]) withSize:qrcode.frame.size.width];
- [self.qrcodeContainer addSubview:qrcode];
- }
- - (UIImage*)generateQRCod:(NSString*) content withSize:(CGFloat)size {
- // 1.创建过滤器,这里的@"CIQRCodeGenerator"是固定的
- CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
-
- // 2.恢复默认设置
- [filter setDefaults];
-
- // 3. 给过滤器添加数据
- NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding];
- // 注意,这里的value必须是NSData类型
- [filter setValue:data forKeyPath:@"inputMessage"];
-
- // 4. 生成二维码
- CIImage *image = [filter outputImage];
-
-
- CGRect extent = CGRectIntegral(image.extent);
- CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));
-
- // 1. 创建bitmap
- size_t width = CGRectGetWidth(extent) * scale;
- size_t height = CGRectGetHeight(extent) * scale;
- CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();
- CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);
- CIContext *context = [CIContext contextWithOptions:nil];
- CGImageRef bitmapImage = [context createCGImage:image fromRect:extent];
- CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);
- CGContextScaleCTM(bitmapRef, scale, scale);
- CGContextDrawImage(bitmapRef, extent, bitmapImage);
-
- // 2.保存bitmap图片
- CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);
- CGContextRelease(bitmapRef);
- CGImageRelease(bitmapImage);
- return [UIImage imageWithCGImage:scaledImage];
- }
- -(void)viewWillAppear:(BOOL)animated{
- [super viewWillAppear:animated];
- self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
- [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
- [self.navigationController.navigationBar setShadowImage:[UIImage new]];
- }
- - (void)viewWillDisappear:(BOOL)animated {
- [super viewWillDisappear:animated];
- [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
- [self.navigationController.navigationBar setShadowImage:nil];
- self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
- }
- - (void)backClick {
- [self.navigationController popViewControllerAnimated:YES];
- }
- - (IBAction)share:(id)sender {
- SharePopViewController *shareVC = [[SharePopViewController alloc] init];
- shareVC.type = self.type;
- [self presentViewController:shareVC animated:NO completion:nil];
- }
- /*
- #pragma mark - Navigation
- // In a storyboard-based application, you will often want to do a little preparation before navigation
- - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
- // Get the new view controller using [segue destinationViewController].
- // Pass the selected object to the new view controller.
- }
- */
- @end
|