ios开发中常用的几种辅助方法
//1.Keychain本地长期键值存储
//删除
+(void)deleteStringForKey:(NSString *)aKey
{NSMutableDictionary *query = [NSMutableDictionary dictionary];[query setObject:(__bridge id)kSecClassGenericPassword forKey:(__bridge id)kSecClass];[query setObject:(id)aKey forKey:(__bridge id)kSecAttrAccount];OSStatus status = SecItemDelete((__bridge CFDictionaryRef)query);if (status != noErr) {// NSLog(@"[KeychainAccessor]>>> SecItemDelete result in error:(%d)", (int)status);}
}
//存储
+ (void)setString:(NSString *)aString forKey:(NSString *)aKey
{NSData *savingData = [aString dataUsingEncoding:NSUTF8StringEncoding];NSMutableDictionary *attributes = [NSMutableDictionary dictionary];[attributes setObject:(__bridge id)kSecClassGenericPassword forKey:(__bridge id)kSecClass];[attributes setObject:(id)aKey forKey:(__bridge id)kSecAttrAccount];[attributes setObject:savingData forKey:(__bridge id)kSecValueData];OSStatus status = SecItemAdd((__bridge CFDictionaryRef)attributes, NULL);if ((int)status==-25299) {// NSLog(@"delete old data add new data");[self deleteStringForKey:aKey];SecItemAdd((__bridge CFDictionaryRef)attributes, NULL);}if (status != noErr) {// NSLog(@"[KeychainAccessor]>>> SecItemAdd result in error:(%d)",(int)status);}
}
//查询
+ (NSString *)stringForKey:(NSString *)aKey {NSMutableDictionary *query = [NSMutableDictionary dictionary];[query setObject:(__bridge id)kSecClassGenericPassword forKey:(__bridge id)kSecClass];[query setObject:(id)aKey forKey:(__bridge id)kSecAttrAccount];[query setObject:(__bridge id)kCFBooleanTrue forKey:(__bridge id)kSecReturnData];[query setObject:(__bridge id)kSecMatchLimitOne forKey:(__bridge id)kSecMatchLimit];CFDataRef result = nil;OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef*)&result);if (status != noErr) {if (status == errSecItemNotFound) {//NSLog(@"[KeychainAccessor]>>> SecItemCopyMatching result NOT-FOUND.");} else {//NSLog(@"[KeychainAccessor]>>> SecItemCopyMatching result in error:(%d)", (int)status);}return @"";}NSData *theValue = [(__bridge NSData*)result copy];return [[NSString alloc] initWithData:theValue encoding:NSUTF8StringEncoding];
}//2.压缩图片到指定尺寸大小
+ (UIImage *)compressOriginalImage:(UIImage *)image toSize:(CGSize)size{UIImage *resultImage = image;UIGraphicsBeginImageContext(size);[resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)];UIGraphicsEndImageContext();return resultImage;
}//3.压缩图片到指定文件大小
+ (NSData *)compressOriginalImage:(UIImage *)image toMaxDataSizeKBytes:(CGFloat)size{NSData *data = UIImageJPEGRepresentation(image, 1.0);CGFloat dataKBytes = data.length/1000.0;CGFloat maxQuality = 0.9f;CGFloat lastData = dataKBytes;while (dataKBytes > size && maxQuality > 0.01f) {maxQuality = maxQuality - 0.01f;data = UIImageJPEGRepresentation(image, maxQuality);dataKBytes = data.length/1000.0;if (lastData == dataKBytes) {break;}else{lastData = dataKBytes;}}return data;
}//全屏截图
+ (UIImage *)shotScreen{UIWindow *window = [UIApplication sharedApplication].keyWindow;UIGraphicsBeginImageContext(window.bounds.size);[window.layer renderInContext:UIGraphicsGetCurrentContext()];UIImage *image = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();return image;
}
ios开发中常用的几种辅助方法相关推荐
- Java 开发中常用的 4 种加密方法。MD5加密工具类测试 base64加密工具类测试 SHA加密工具类测试 BCrypt加密工具类测试
一.工具类 1, md5加密工具类 2, base64加密工具类 3, Bcrypt工具类 二.加密测试 MD5加密测试 base64加密测试 SHA加密测试 BCrypt加密测试 一.工具类 1, ...
- iOS开发中常用的方法
iOS开发中常用的方法 系统弹窗: 过期方法: UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"确认报价" ...
- python中常用的九种预处理方法
本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...
- ios加载本地html懒加载图片方案,IOS开发中加载大量网络图片优化方法
IOS开发中加载大量网络图片如何优化 1.概述 在IOS下通过URL读一张网络图片并不像其他编程语言那样可以直接把图片路径放到图片路径的位置就ok,而是需要我们通过一段类似流的方式去加载网络图片,接着 ...
- 前端开发中常用的几种设计模式
设计模式概览 设计模式是对软件设计开发过程中反复出现的某类问题的通用解决方案.设计模式更多的是指导思想和方法论,而不是现成的代码,当然每种设计模式都有每种语言中的具体实现方式.学习设计模式更多的是理解 ...
- 嵌入式开发中常用的几种通信接口总结
关注.星标公众号,直达精彩内容 在嵌入式系统中,板上通信接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线. 以下内容为常用板上通信接口:包括I2C.SPI.UART.1-Wire: I ...
- PHP调试中常用的几种输出方法
PHP开发中,经常会查看变量的值,因此经常会将变量的值输出到页面以便于查看. 常用的输出方式有:echo .print .print_r .var_dump .var_exprot 等: echo和p ...
- CJBorderView 一种iOS开发中常用的虚线边框View------* An easy way to init a view with dotted line border
CJBorderView An easy way to init a view with dotted line border Author:CoderChenJun Email:Coder.Chen ...
- iOS开发中 常用枚举和常用的一些运算符(易错总结)
1.色值的随机值: #define kColorValue arc4random_uniform(256)/255.0 // arc4random_uniform(256)/255.0; 求出0.0~ ...
最新文章
- 驰骋工作流引擎设计系列04 流程引擎表结构的设计
- HBase性能优化方法总结(四):数据计算
- nRF51822 SDK初体验
- cesium获取模型高度_Cesium中地形数据的加载
- MQTT 控制报文 - PINGREQ心跳报文,PINGRESP - 第4章
- 大数据平台的搭建和数据分析
- Win11鼠标动不了如何恢复?Win11鼠标动不了恢复的方法
- hdmi接口有什么用_当贝投影仪HDMI(ARC)接口是什么意思?
- Win10电脑连接不上无线网络怎么解决
- GroovyGrails
- eCharts好看的 响应式 圆环饼图 及文字 附vue源码代码
- Altium Designer简明教程2
- 【Carla】自定义仿真场景制作
- spring boot 使用过滤器过滤非法字符
- 橘红色html语言,橘红色调色概念和调配方法!
- 如何修改论文降低重复率
- 软件构想:supermemo 云计算方案
- unity的vr场景怎么做_如何通过Unity快速创建1:1VR场景 不到一小时就可完成制作 - VR之家...
- 计算机字体安装按钮灰色,win7系统无法安装字体安装按钮灰色的的操作技巧
- 【C标准库】详解fopen函数 一篇让你搞懂fopen函数