You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
5.2 KiB
130 lines
5.2 KiB
// |
|
// QRCodeMsgViewController.m |
|
// LekangGuard |
|
// |
|
// Created by ecell on 2022/12/7. |
|
// |
|
|
|
#import "QRCodeMsgViewController.h" |
|
#import <CoreImage/CoreImage.h> |
|
|
|
@interface QRCodeMsgViewController () |
|
|
|
|
|
@end |
|
|
|
@implementation QRCodeMsgViewController |
|
|
|
- (void)viewDidLoad { |
|
[super viewDidLoad]; |
|
// Do any additional setup after loading the view. |
|
self.zx_navTitle = GJText(@"二维码"); |
|
|
|
UIView *bgView = [UICommon ui_view:CGRectZero backgroundColor:KKWhiteColorColor cornerRadius:3 borderWidth:0 borderColor:KKClearColor]; |
|
[self.view addSubview:bgView]; |
|
[bgView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.top.equalTo(self.view).offset(iPhoneX_NavHeight+Adapted(20)); |
|
make.left.right.equalTo(self.view).inset(Adapted(20)); |
|
make.height.mas_equalTo(SCREEN_WIDTH+Adapted(40)); |
|
}]; |
|
|
|
UIImageView *qrCodeImg = [UIImageView new]; |
|
qrCodeImg.image = [self createNonInterpolatedUIImageFormCIImage:APIManager.sharedManager.deviceModel.imei withSize:SCREEN_WIDTH-Adapted(120)]; |
|
[bgView addSubview:qrCodeImg]; |
|
[qrCodeImg mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.right.equalTo(bgView).inset(Adapted(40)); |
|
make.top.equalTo(bgView).offset(Adapted(25)); |
|
make.height.mas_equalTo(SCREEN_WIDTH-Adapted(120)); |
|
}]; |
|
|
|
UILabel *imeiLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentLeft font:FontADA_(13) textColor:KKTextBlackColor text:@"" Radius:0]; |
|
imeiLabel.text = F(@"IMEI/MEID:%@", APIManager.sharedManager.deviceModel.imei); |
|
[bgView addSubview:imeiLabel]; |
|
[imeiLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.centerX.equalTo(self.view); |
|
make.top.equalTo(qrCodeImg.mas_bottom).offset(Adapted(10)); |
|
}]; |
|
|
|
|
|
UILabel *tiLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentLeft font:FontADA_(13) textColor:KKGrey121 text:@"" Radius:0]; |
|
tiLabel.text = GJText(@"扫一扫二维码,关注我"); |
|
[bgView addSubview:tiLabel]; |
|
[tiLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.centerX.equalTo(self.view).offset(Adapted(25)+8); |
|
make.bottom.equalTo(bgView.mas_bottom).inset(Adapted(45)); |
|
}]; |
|
|
|
UILabel *nameLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentLeft font:FontADA_(15) textColor:KKTextBlackColor text:@"" Radius:0]; |
|
nameLabel.text = APIManager.sharedManager.deviceModel.name; |
|
[bgView addSubview:nameLabel]; |
|
[nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.equalTo(tiLabel.mas_left); |
|
make.bottom.equalTo(tiLabel.mas_top).inset(10); |
|
}]; |
|
|
|
UIImageView *iconImg = [UIImageView new]; |
|
[bgView addSubview:iconImg]; |
|
[iconImg mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.bottom.equalTo(tiLabel.mas_bottom).offset(5); |
|
make.right.equalTo(tiLabel.mas_left).inset(8); |
|
make.size.mas_equalTo(CGSizeMake(Adapted(50), Adapted(50))); |
|
}]; |
|
|
|
if (APIManager.sharedManager.deviceModel.image.length <= 0) |
|
iconImg.image = ImageName_(APIManager.sharedManager.deviceModel.sex == 2 ? @"icon_head_girl" : @"icon_head_boy"); |
|
else |
|
[iconImg sd_setImageWithURL:[NSURL URLWithString:APIManager.sharedManager.deviceModel.image] placeholderImage:ImageName_(APIManager.sharedManager.deviceModel.sex == 2 ? @"icon_head_girl" : @"icon_head_boy")]; |
|
|
|
|
|
|
|
} |
|
|
|
/** |
|
* 根据CIImage生成指定大小的UIImage |
|
* |
|
* @param imageStr 生成的图片内容 |
|
* @param size 图片宽度 |
|
*/ |
|
- (UIImage *)createNonInterpolatedUIImageFormCIImage:(NSString *)imageStr withSize:(CGFloat)size |
|
{ |
|
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; |
|
[filter setDefaults]; |
|
NSData *data = [imageStr dataUsingEncoding:NSUTF8StringEncoding]; |
|
[filter setValue:data forKeyPath:@"inputMessage"]; |
|
//输出图片 |
|
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]; |
|
} |
|
|
|
|
|
/* |
|
#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
|
|
|