ios开发中常用的几种辅助方法
来源:互联网 发布:网络分频器 编辑:程序博客网 时间:2024/04/28 06:06
//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;}
0 0
- ios开发中常用的几种辅助方法
- iOS开发中常用的几种绘图方法
- ios开发中网络模块开发的几种常用方法
- 在iOS开发中常用的参数传递有以下几种方法:
- iOS开发中常用的几种设计模式介绍
- iOS开发中常用的几种设计模式
- 程序辅助扫雷的几种方法
- iOS开发中个人调试的几种方法
- iOS开发中方法延迟执行的几种方式
- iOS开发中方法延迟执行的几种方式
- iOS开发中方法延迟执行的几种方式
- iOS开发中方法延迟执行的几种方式
- iOS 开发中方法延迟执行的几种方式
- iOS 中常用的几种加密
- iOS开发过程中常用的方法
- iOS开发过程中常用的方法
- iOS开发中一些常用的方法
- iOS开发中常用的方法
- oracle merge 语句,无数据新增,有数据更新
- Ugly Number
- 关于开发框架设计的一点想法
- 文章标题
- 选择排序
- ios开发中常用的几种辅助方法
- C#命名规则和风格
- 冒泡排序
- _Time
- 仿今天头条加载环境文字闪动效果
- [leetcode] 191. Number of 1 Bits
- 移动支付之支付宝支付
- 从多方面理解 Android 体系结构
- Android 热修复之AndFix混淆