`
jsntghf
  • 浏览: 2527394 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

iOS中的常用方法(持续更新)

    博客分类:
  • iOS
阅读更多

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);
}

 

分享到:
评论

相关推荐

    EasyiOS_iOS开发类的各种封装

    在iOS开发过程中,为了提高开发效率和代码复用性,开发者常常会进行各种类的封装。"EasyiOS_iOS开发类的各种封装"就是一个这样的...不过,使用第三方库时,也要注意版本兼容性和更新维护,确保项目的稳定性和可持续性。

    ios-几种常用的排序方法-)OC.zip

    快速排序在平均情况下效率较高,是实际应用中最常用的排序算法之一。在iOS开发中,了解这些排序算法有助于优化代码性能,提高程序运行效率。在具体应用时,应根据数据特点和性能需求选择合适的排序算法。

    ios-ReactiveCocoa 常用方法.zip

    本压缩包文件“ios-ReactiveCocoa 常用方法.zip”包含了ReactiveCocoaDemo,通过这个示例项目,我们将深入探讨ReactiveCocoa的一些关键用法。 1. **信号(Signals)** - `RACSignal` 是ReactiveCocoa中最基础的类...

    用TFTP进行 IOS 升级的方法

    由于其轻量级和易于实现的特性,它成为在路由器或交换机上进行IOS升级的常用工具。 步骤一:设置TFTP服务器 1. 在一台运行Windows或Linux的计算机上,你需要安装一个TFTP服务器软件,例如3C Daemon。这个软件可以从...

    iOS开发常用动画

    本文将详细介绍iOS中常见的两种动画实现方法:基于`UIView`的动画和基于`CATransition`的动画,并通过具体的代码示例来帮助开发者更好地理解和应用这些技术。 #### 二、基于`UIView`的动画 基于`UIView`的动画是一...

    iOS常用类库推荐包含图表,布局好,缓存等

    ### iOS常用类库推荐 #### 一、图表绘制类库 在iOS应用开发过程中,图表绘制是一项重要的功能需求,尤其是在数据分析、数据展示等场景下。下面介绍几款优秀的图表绘制类库: 1. **Charts**:这是由Daniel Gindi...

    非科班出身程序员刷题-iOS_Gather:总结的iOS开发常用库-调调的--持续更新中……

    持续更新中…… 目录 [Apple Watch Demo](#Apple Watch Demo) 内容 Swift教程 iOS教程 - 动画教程写的很赞 - 很赞iPHone适配相关的教程 - 以公司或团体名义在苹果AppStore上架APP - 666的分许了网易的导航实现方式 ...

    ios常用动画封装类

    * CATransition 常用设置及属性注解如下: */ CATransition *animation = [CATransition animation]; /** delegate * * 动画的代理,如果你想在动画开始和结束的时候做一些事,可以设置此属性,它会自动回调两...

    ios开发当中常用遇到的问题和解决方法的收集.zip

    在iOS开发过程中,开发者经常会遇到各种挑战和问题。这些挑战涉及了从编程语言Swift或Objective-C的使用,到用户界面(UI)设计,再到应用程序性能优化等多个方面。以下是一些常见问题及其解决方法的概述。 1. **...

    iOS开发常用第三方库

    以下是一些常见的iOS开发中常用的第三方库及其详细说明: 1. **Alamofire** - Alamofire 是一个基于 Swift 的 HTTP 网络库,它简化了网络请求的处理,提供了优雅的请求和响应处理方式。通过其简洁的 API,开发者...

    iOS常用动画

    ### iOS常用动画详解 在iOS应用开发过程中,动画效果能够显著提升用户体验,使得应用程序更加生动有趣。本篇文章将深入探讨几种常见的iOS动画实现方法,并通过具体的代码示例进行讲解。 #### 1. 翻转动画 翻转动画...

    iOS常用第三方类库 - CocoaChina 苹果开发中文站 - 最热的iPhone开发社区 最热的苹果开发社区 最热的iPa

    以下是一些常用的iOS第三方类库及其应用领域: 1. JSON解析:对于处理JSON格式的数据,`json`库是必不可少的。例如,`Gson`(GTMBase64)可以方便地进行Base64编码和解码,而`TouchXML`则用于XML解析。 2. ...

    iOS轻量级高效率工具库,都是项目中常用的工具分类.zip

    在iOS开发中,高效、轻量级的工具库对于提升项目的开发速度和代码质量至关重要。"iOS轻量级高效率工具库,...此外,由于社区的持续贡献,这些工具库通常会随着时间推移不断更新和完善,以适应最新的iOS SDK和编程规范。

    ios-iOS 搭建项目框架.zip

    在这个框架中,开发者可以找到一些常用的方法,这些方法通常在多个场景下被频繁使用,能够提高开发效率。 首先,让我们深入了解一下iOS项目框架的基本构成。一个标准的iOS项目框架通常包括以下几个部分: 1. **...

    IOS应用源码——wordpress ios客户端最新源码.zip

    3. **AFNetworking**:在iOS开发中,常用AFNetworking进行网络请求,处理API调用,获取WordPress博客的数据。 4. **JSON解析**:WordPress API通常返回JSON格式的数据,因此源码中会有解析JSON的部分,可能使用了像...

    iOS7 设计备忘录

    文档强调了在iOS7发布后,苹果公司更新了应用设计中的许多方面,比如网格系统、图标尺寸、常用元素尺寸、排版以及图标系统等。iOS7采用了一种扁平化的设计风格,这要求设计师和开发者重新调整他们的视觉语言以匹配...

    美团 iOS 客户端的构建思考与实践

    文档中提到的关键知识点主要包括了iOS客户端架构的演进、高效开发实践、模块化设计思想、以及持续集成(CI)等关键实践。 iOS客户端架构演进方面,文档中强调了随着业务的扩展和技术的发展,iOS客户端架构经历了从...

    ios-长按手势自定义复制功能.zip

    首先,`tableview`是iOS界面设计中常用的一种组件,它用于展示列表数据。系统默认并不提供长按触发的复制功能,但开发者可以通过添加手势识别器(GestureRecognizer)来扩展这一特性。在`UITableView`中,我们通常会...

    易语言IOS图标抖动源码.rar

    标题中的“易语言IOS图标抖动源码”指的是使用易语言编写的一段代码,这段代码实现了iOS风格的应用图标在屏幕上的抖动效果。易语言是中国的一款简单易学的编程语言,它采用直观的中文语法,使得编程对于初学者更为...

    ios-时钟.zip

    因此,为了在后台持续更新时钟,可能需要结合`UIApplication.shared.beginBackgroundTask(withName:)`和`endBackgroundTask(_:)`来申请后台执行时间。 最后,事件处理和交互设计也是不可或缺的一部分。例如,用户...

Global site tag (gtag.js) - Google Analytics