![]()
#import "DetailViewController.h"
#import "UIView+Frame.h"
#define kScreenW [UIScreen mainScreen].bounds.size.width
#define KScreenH [UIScreen mainScreen].bounds.size.height
#define margin 10
#define nickNameTest @"Johnson"
#define qrMargin 40
//目标地址
#define destinationURL @"http://u.wechat.com/EOioL-UEH2sd90q3asd3423sdas"
@interface DetailViewController ()
@property(nonatomic,weak)UIImageView *qrImageView;
@end
@implementation DetailViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor colorWithRed:228 / 255.0 green:228 / 255.0 blue:228 / 255.0 alpha:1.0];
self.navigationItem.title = @"我的二维码";
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"capture_nav_back_normal"] style:UIBarButtonItemStylePlain target:self action:@selector(back)];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"test1"] style:UIBarButtonItemStylePlain target:self action:@selector(more)];
[self setupUI];
}
-(void)setupUI{
UIView *centerView = [[UIView alloc]init];
centerView.frame = CGRectMake(margin * 2, KScreenH * 0.18, kScreenW - 4 * margin, (kScreenW - 2 * margin)*1.3);
//设置圆角
centerView.layer.cornerRadius = 6;
centerView.layer.masksToBounds = YES;
centerView.backgroundColor = UIColor.whiteColor;
[self.view addSubview:centerView];
//头像
UIImageView *iconImageView = [[UIImageView alloc]init];
iconImageView.frame = CGRectMake(margin * 2 , margin * 2, 60, 60);
iconImageView.image = [UIImage imageNamed:@"user"];
[centerView addSubview:iconImageView];
//昵称
UILabel *nickLabel = [[UILabel alloc]init];
nickLabel.text = nickNameTest;
nickLabel.textAlignment = NSTextAlignmentLeft;
nickLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightBold];
nickLabel.textColor = [UIColor blackColor];
nickLabel.frame = CGRectMake(iconImageView.right + margin, iconImageView.top + 4, 0, 20);
CGSize size = [nickNameTest sizeWithAttributes:@{
NSFontAttributeName:[UIFont systemFontOfSize:20 weight:UIFontWeightBold]
}];
nickLabel.width = size.width;
nickLabel.height = size.height;
[centerView addSubview:nickLabel];
//性别
UIImageView *sexImageView = [[UIImageView alloc]init];
sexImageView.image = [UIImage imageNamed:@"femal"];
sexImageView.size = CGSizeMake(18, 18);
sexImageView.left = nickLabel.right + 2;
sexImageView.bottom = nickLabel.bottom - 3;
[centerView addSubview:sexImageView];
//地区
UILabel *areaLabel = [[UILabel alloc]init];
areaLabel.text = @"北京市 海淀区";
areaLabel.textColor = UIColor.grayColor;
areaLabel.left = nickLabel.left;
areaLabel.top = nickLabel.bottom + 10;
areaLabel.font = [UIFont systemFontOfSize:14];
[areaLabel sizeToFit];
[centerView addSubview:areaLabel];
//二维码
UIImageView *qrImageView = [[UIImageView alloc]init];
CGFloat qrSizeWH = (kScreenW - 4 * margin) - 2 * qrMargin;
UIImage *image1 = [DetailViewController creatQRImage:destinationURL withSize:qrSizeWH];
UIImage *center = [UIImage imageNamed:@"user"];
image1 = [self getNewImage:image1 withCenter:center];
qrImageView.image = image1;
qrImageView.top = iconImageView.bottom + qrMargin;
qrImageView.left = qrMargin;
qrImageView.size = CGSizeMake(qrSizeWH, qrSizeWH);
[centerView addSubview:qrImageView];
self.qrImageView = qrImageView;
//提示表情
UILabel *tipsLabel = [[UILabel alloc]init];
tipsLabel.text = @"扫一扫上面的二维码图案,加我微信";
tipsLabel.textColor = UIColor.grayColor;
tipsLabel.font = [UIFont systemFontOfSize:13];
[tipsLabel sizeToFit];
tipsLabel.bottom = centerView.bounds.size.height - 20;
tipsLabel.left = (centerView.width - tipsLabel.width) * 0.5;
[centerView addSubview:tipsLabel];
}
-(void)back{
[self.navigationController popViewControllerAnimated:YES];
}
-(void)more{
// NSLog(@"%s",__func__);
UIAlertController *alerVC = [UIAlertController alertControllerWithTitle:@"" message:@"保存" preferredStyle:UIAlertControllerStyleActionSheet];
[alerVC addAction:[UIAlertAction actionWithTitle:@"保存" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
UIImageWriteToSavedPhotosAlbum(self.qrImageView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
}]];
[alerVC addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
}]];
[self presentViewController:alerVC animated:YES completion:nil];
}
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
if(error){
UIAlertController *alerVC = [UIAlertController alertControllerWithTitle:@"" message:@"保存失败" preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController:alerVC animated:YES completion:nil];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.2*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self dismissViewControllerAnimated:alerVC completion:nil];
});
}else{
UIAlertController *alerVC = [UIAlertController alertControllerWithTitle:@"" message:@"保存成功" preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController:alerVC animated:YES completion:nil];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.2*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self dismissViewControllerAnimated:alerVC completion:nil];
});
}
}
//创建一个QRImage
+(UIImage *)creatQRImage:(NSString *)url withSize:(CGFloat)size{
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[filter setDefaults];
NSString *string = url;
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
[filter setValue:data forKeyPath:@"inputMessage"];
CIImage *img= [filter outputImage];
return [self setQRImage:img withSize:size];
}
//设置QRImage 附加大小
+(UIImage *)setQRImage:(CIImage *)image withSize:(CGFloat)size{
CGRect extent = CGRectIntegral(image.extent);
CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));
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);
CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);
CGContextRelease(bitmapRef);
CGImageRelease(bitmapImage);
return [UIImage imageWithCGImage:scaledImage];
}
//得到一个新的图片
-(UIImage *)getNewImage:(UIImage *)sourceImage withCenter:(UIImage *)center{
CGSize size = sourceImage.size;
UIGraphicsBeginImageContext(sourceImage.size);
[sourceImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
CGFloat width = 80,height = 80;
CGFloat x = (size.width - width) / 2;
CGFloat y = (size.height - height) / 2;
[center drawInRect:CGRectMake(x, y, width, height)];
UIImage *resultImgae = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultImgae;
}
@end