//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开发中常用的几种辅助方法相关推荐

  1. Java 开发中常用的 4 种加密方法。MD5加密工具类测试 base64加密工具类测试 SHA加密工具类测试 BCrypt加密工具类测试

    一.工具类 1, md5加密工具类 2, base64加密工具类 3, Bcrypt工具类 二.加密测试 MD5加密测试 base64加密测试 SHA加密测试 BCrypt加密测试 一.工具类 1, ...

  2. iOS开发中常用的方法

    iOS开发中常用的方法 系统弹窗: 过期方法: UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"确认报价" ...

  3. python中常用的九种预处理方法

    本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...

  4. ios加载本地html懒加载图片方案,IOS开发中加载大量网络图片优化方法

    IOS开发中加载大量网络图片如何优化 1.概述 在IOS下通过URL读一张网络图片并不像其他编程语言那样可以直接把图片路径放到图片路径的位置就ok,而是需要我们通过一段类似流的方式去加载网络图片,接着 ...

  5. 前端开发中常用的几种设计模式

    设计模式概览 设计模式是对软件设计开发过程中反复出现的某类问题的通用解决方案.设计模式更多的是指导思想和方法论,而不是现成的代码,当然每种设计模式都有每种语言中的具体实现方式.学习设计模式更多的是理解 ...

  6. 嵌入式开发中常用的几种通信接口总结

    关注.星标公众号,直达精彩内容 在嵌入式系统中,板上通信接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线. 以下内容为常用板上通信接口:包括I2C.SPI.UART.1-Wire: I ...

  7. PHP调试中常用的几种输出方法

    PHP开发中,经常会查看变量的值,因此经常会将变量的值输出到页面以便于查看. 常用的输出方式有:echo .print .print_r .var_dump .var_exprot 等: echo和p ...

  8. 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 ...

  9. iOS开发中 常用枚举和常用的一些运算符(易错总结)

    1.色值的随机值: #define kColorValue arc4random_uniform(256)/255.0 // arc4random_uniform(256)/255.0; 求出0.0~ ...

最新文章

  1. 驰骋工作流引擎设计系列04 流程引擎表结构的设计
  2. HBase性能优化方法总结(四):数据计算
  3. nRF51822 SDK初体验
  4. cesium获取模型高度_Cesium中地形数据的加载
  5. MQTT 控制报文 - PINGREQ心跳报文,PINGRESP - 第4章
  6. 大数据平台的搭建和数据分析
  7. Win11鼠标动不了如何恢复?Win11鼠标动不了恢复的方法
  8. hdmi接口有什么用_当贝投影仪HDMI(ARC)接口是什么意思?
  9. Win10电脑连接不上无线网络怎么解决
  10. GroovyGrails
  11. eCharts好看的 响应式 圆环饼图 及文字 附vue源码代码
  12. Altium Designer简明教程2
  13. 【Carla】自定义仿真场景制作
  14. spring boot 使用过滤器过滤非法字符
  15. 橘红色html语言,橘红色调色概念和调配方法!
  16. 如何修改论文降低重复率
  17. 软件构想:supermemo 云计算方案
  18. unity的vr场景怎么做_如何通过Unity快速创建1:1VR场景 不到一小时就可完成制作 - VR之家...
  19. 计算机字体安装按钮灰色,win7系统无法安装字体安装按钮灰色的的操作技巧
  20. 【C标准库】详解fopen函数 一篇让你搞懂fopen函数

热门文章

  1. windows客户端安装时运行时库版本不匹配的问题
  2. 限制输入长度,输入数字的大小和禁止输入e
  3. 【机器学习|数学基础】Mathematics for Machine Learning系列之矩阵理论(25):幂级数(补充知识)
  4. 对英雄联盟比赛预测(一)- 特征分析
  5. [原]Dropship的流程
  6. 汽车的杂七杂八-SOME/IP+控制器
  7. excel查询mysql数据库表,excel创建数据表/查询mysql数据库中所有表名
  8. 豆瓣Top250电影数据分析报告
  9. Qt工程生成MiniDump文件
  10. lammps多孔结构