1、JSON解析
- (NSDictionary *)serializedData:(NSData *)data { NSError *JSONSerializationError; NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&JSONSerializationError]; if(JSONSerializationError) { [NSException raise:@"JSON Serialization Error" format:@"Failed to parse weather data"]; } return JSON; }
2、背景模糊,需要UIImage+ImageEffects
- (void)setBlurredOverlayImage { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // Take a screen shot of this controller's view UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0.0); CGContextRef context = UIGraphicsGetCurrentContext(); [self.view.layer renderInContext:context]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // Blur the screen shot UIImage *blurred = [image applyBlurWithRadius:20 tintColor:[UIColor colorWithWhite:0.15 alpha:0.5] saturationDeltaFactor:1.5 maskImage:nil]; dispatch_async(dispatch_get_main_queue(), ^ { // Set the blurred overlay view's image with the blurred screenshot self.blurredOverlayView.image = blurred; }); }); }
3、计算pageControl的页码
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { // Update the current page for the page control float fractionalPage = self.pagingScrollView.contentOffset.x / self.pagingScrollView.frame.size.width; self.pageControl.currentPage = lround(fractionalPage); }
4、图像缩放
+ (UIImage *)scale:(UIImage *)sourceImg toSize:(CGSize)size { UIGraphicsBeginImageContext(size); [sourceImg drawInRect:CGRectMake(0, 0, size.width, size.height)]; UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return scaledImage; } + (CGSize)scaleSize:(CGSize)sourceSize { float width = sourceSize.width; float height = sourceSize.height; if (width >= height) return CGSizeMake(800, 800 * height / width); else return CGSizeMake(800 * width / height, 800); }
5、ASIHTTPRequest取消请求
+ (void)CancelRequest:(ASIHTTPRequest *)request { if (request != nil) { [request cancel]; [request clearDelegatesAndCancel]; } }
6、debug log switch
#ifdef DEBUG # define NSLog(...) NSLog(__VA_ARGS__) #else # define NSLog(...) {} #endif
7、Disk cache
NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024 diskCapacity:20 * 1024 * 1024 diskPath:nil]; [NSURLCache setSharedURLCache:URLCache];
8、AFNetworking
[[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES]; [[AFNetworkReachabilityManager sharedManager] startMonitoring]; [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { NSString* title = @"网络未连接"; switch (status) { case AFNetworkReachabilityStatusNotReachable: title = @"网络未连接"; break; case AFNetworkReachabilityStatusReachableViaWiFi: title = @"当前wifi已连接"; break; case AFNetworkReachabilityStatusReachableViaWWAN: title = @"当前2g/3g已连接"; break; default: break; } [RCGlobalConfig HUDShowMessage:title addedToView:[UIApplication sharedApplication].keyWindow]; }];
9、MBProgressHUD
+ (MBProgressHUD *)HUDShowMessage:(NSString *)msg addedToView:(UIView *)view { static MBProgressHUD *hud = nil; if (!hud) hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; hud.mode = MBProgressHUDModeText; hud.labelText = msg; hud.hidden = NO; hud.alpha = 1.0f; [hud hide:YES afterDelay:1.0f]; return hud; }
10、UIBarButtonItem
+ (UIBarButtonItem *)createBarButtonItemWithTitle:(NSString *)buttonTitle Target:(id)target action:(SEL)action { UIBarButtonItem *item = nil; item = [[UIBarButtonItem alloc] initWithTitle:buttonTitle style:UIBarButtonItemStylePlain target:target action:action]; return item; } + (UIBarButtonItem *)createMenuBarButtonItemWithTarget:(id)target action:(SEL)action { return [[UIBarButtonItem alloc] initWithImage:[UIImage nimbusImageNamed:@"icon_menu.png"] style:UIBarButtonItemStylePlain target:target action:action]; } + (UIBarButtonItem *)createRefreshBarButtonItemWithTarget:(id)target action:(SEL)action { UIBarButtonItem *item = nil; item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:target action:action]; return item; }
11、获取UIView对应的UIViewController
#import <UIKit/UIKit.h> @interface UIView (findViewController) - (UIViewController *)viewController; @end #import "UIView+findViewController.h" @implementation UIView (findViewController) - (UIViewController *)viewController { // Traverse responder chain. Return first found view controller, which will be the view's view controller. UIResponder *responder = self; while ((responder = [responder nextResponder])) if ([responder isKindOfClass:[UIViewController class]]) return (UIViewController *)responder; // If the view controller isn't found, return nil. return nil; } @end
12、获取图片,需要nimbus
#import <UIKit/UIKit.h> @interface UIImage (nimbusImageNamed) + (UIImage *)nimbusImageNamed:(NSString *)imageName; @end #import "UIImage+nimbusImageNamed.h" @implementation UIImage (nimbusImageNamed) + (UIImage *)nimbusImageNamed:(NSString *)imageName { NSString *imagePath = NIPathForBundleResource(nil, imageName); UIImage *image = [[Nimbus imageMemoryCache] objectWithName:imagePath]; if (nil == image) { image = [UIImage imageWithContentsOfFile:imagePath]; // store it in memory [[Nimbus imageMemoryCache] storeObject:image withName:imagePath]; } return image; } @end
13、保存图片
if(photoView.image) UIImageWriteToSavedPhotosAlbum(photoView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
14、获取文件内容
+ (NSString *)contentForFile:(NSString *)file ofType:(NSString *)type { NSString *filePath=[[NSBundle mainBundle] pathForResource:file ofType:type]; NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; return content; }
15、获取AppDelegate
+ (SFAppDelegate *)applicationDelegate { return (SFAppDelegate *)[[UIApplication sharedApplication] delegate]; }
16、计算字符高度
+ (float)heightOfString:(NSString *)string withWidth:(float)width font:(UIFont *)font { if ([NSNull null] == (id)string) string = @"暂时没有数据"; CGSize constraintSize = CGSizeMake(width, MAXFLOAT); CGSize labelSize = [string sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; return labelSize.height; }
17、设置cookie
NSHTTPCookie *uidCookie = [NSHTTPCookie cookieWithProperties: [NSDictionary dictionaryWithObjectsAndKeys: @"sfuid", NSHTTPCookieName, @"", NSHTTPCookieValue, @".segmentfault.com", NSHTTPCookieDomain, @"segmentfault.com", NSHTTPCookieOriginURL, @"/", NSHTTPCookiePath, @"0", NSHTTPCookieVersion, nil]]; [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:uidCookie];
18、定义枚举
typedef NS_OPTIONS(NSUInteger, MLDays) { ML_DAYS_ONCE = 0, ML_DAYS_MON = 1, ML_DAYS_TUE = 1 << 1, ML_DAYS_WED = 1 << 2, ML_DAYS_THU = 1 << 3, ML_DAYS_FRI = 1 << 4, ML_DAYS_SAT = 1 << 5, ML_DAYS_SUN = 1 << 6, ML_DAYS_ALL = 0x1111111 };
19、判断是否为空
static inline BOOL isEmpty(id thing) { return thing == nil || thing == [NSNull null] || ([thing respondsToSelector:@selector(length)] && [(NSData *)thing length] == 0) || ([thing respondsToSelector:@selector(count)] && [(NSArray *)thing count] == 0); }
相关推荐
在iOS开发过程中,为了提高开发效率和代码复用性,开发者常常会进行各种类的封装。"EasyiOS_iOS开发类的各种封装"就是一个这样的...不过,使用第三方库时,也要注意版本兼容性和更新维护,确保项目的稳定性和可持续性。
快速排序在平均情况下效率较高,是实际应用中最常用的排序算法之一。在iOS开发中,了解这些排序算法有助于优化代码性能,提高程序运行效率。在具体应用时,应根据数据特点和性能需求选择合适的排序算法。
本压缩包文件“ios-ReactiveCocoa 常用方法.zip”包含了ReactiveCocoaDemo,通过这个示例项目,我们将深入探讨ReactiveCocoa的一些关键用法。 1. **信号(Signals)** - `RACSignal` 是ReactiveCocoa中最基础的类...
由于其轻量级和易于实现的特性,它成为在路由器或交换机上进行IOS升级的常用工具。 步骤一:设置TFTP服务器 1. 在一台运行Windows或Linux的计算机上,你需要安装一个TFTP服务器软件,例如3C Daemon。这个软件可以从...
本文将详细介绍iOS中常见的两种动画实现方法:基于`UIView`的动画和基于`CATransition`的动画,并通过具体的代码示例来帮助开发者更好地理解和应用这些技术。 #### 二、基于`UIView`的动画 基于`UIView`的动画是一...
### iOS常用类库推荐 #### 一、图表绘制类库 在iOS应用开发过程中,图表绘制是一项重要的功能需求,尤其是在数据分析、数据展示等场景下。下面介绍几款优秀的图表绘制类库: 1. **Charts**:这是由Daniel Gindi...
持续更新中…… 目录 [Apple Watch Demo](#Apple Watch Demo) 内容 Swift教程 iOS教程 - 动画教程写的很赞 - 很赞iPHone适配相关的教程 - 以公司或团体名义在苹果AppStore上架APP - 666的分许了网易的导航实现方式 ...
* CATransition 常用设置及属性注解如下: */ CATransition *animation = [CATransition animation]; /** delegate * * 动画的代理,如果你想在动画开始和结束的时候做一些事,可以设置此属性,它会自动回调两...
在iOS开发过程中,开发者经常会遇到各种挑战和问题。这些挑战涉及了从编程语言Swift或Objective-C的使用,到用户界面(UI)设计,再到应用程序性能优化等多个方面。以下是一些常见问题及其解决方法的概述。 1. **...
以下是一些常见的iOS开发中常用的第三方库及其详细说明: 1. **Alamofire** - Alamofire 是一个基于 Swift 的 HTTP 网络库,它简化了网络请求的处理,提供了优雅的请求和响应处理方式。通过其简洁的 API,开发者...
### iOS常用动画详解 在iOS应用开发过程中,动画效果能够显著提升用户体验,使得应用程序更加生动有趣。本篇文章将深入探讨几种常见的iOS动画实现方法,并通过具体的代码示例进行讲解。 #### 1. 翻转动画 翻转动画...
以下是一些常用的iOS第三方类库及其应用领域: 1. JSON解析:对于处理JSON格式的数据,`json`库是必不可少的。例如,`Gson`(GTMBase64)可以方便地进行Base64编码和解码,而`TouchXML`则用于XML解析。 2. ...
在iOS开发中,高效、轻量级的工具库对于提升项目的开发速度和代码质量至关重要。"iOS轻量级高效率工具库,...此外,由于社区的持续贡献,这些工具库通常会随着时间推移不断更新和完善,以适应最新的iOS SDK和编程规范。
在这个框架中,开发者可以找到一些常用的方法,这些方法通常在多个场景下被频繁使用,能够提高开发效率。 首先,让我们深入了解一下iOS项目框架的基本构成。一个标准的iOS项目框架通常包括以下几个部分: 1. **...
3. **AFNetworking**:在iOS开发中,常用AFNetworking进行网络请求,处理API调用,获取WordPress博客的数据。 4. **JSON解析**:WordPress API通常返回JSON格式的数据,因此源码中会有解析JSON的部分,可能使用了像...
文档强调了在iOS7发布后,苹果公司更新了应用设计中的许多方面,比如网格系统、图标尺寸、常用元素尺寸、排版以及图标系统等。iOS7采用了一种扁平化的设计风格,这要求设计师和开发者重新调整他们的视觉语言以匹配...
文档中提到的关键知识点主要包括了iOS客户端架构的演进、高效开发实践、模块化设计思想、以及持续集成(CI)等关键实践。 iOS客户端架构演进方面,文档中强调了随着业务的扩展和技术的发展,iOS客户端架构经历了从...
首先,`tableview`是iOS界面设计中常用的一种组件,它用于展示列表数据。系统默认并不提供长按触发的复制功能,但开发者可以通过添加手势识别器(GestureRecognizer)来扩展这一特性。在`UITableView`中,我们通常会...
标题中的“易语言IOS图标抖动源码”指的是使用易语言编写的一段代码,这段代码实现了iOS风格的应用图标在屏幕上的抖动效果。易语言是中国的一款简单易学的编程语言,它采用直观的中文语法,使得编程对于初学者更为...
因此,为了在后台持续更新时钟,可能需要结合`UIApplication.shared.beginBackgroundTask(withName:)`和`endBackgroundTask(_:)`来申请后台执行时间。 最后,事件处理和交互设计也是不可或缺的一部分。例如,用户...