自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 收藏
  • 关注

原创 iOS开发 - 23.实用技术之定位

0 专业术语LBS(Location Based Service)SoLoMo(Social Location Mobile)(所罗门)1.基本使用CLLocationManager 创建管理者对象开始获取位置(开发经验:start 开始某个服务 stop 停止某个服务)iOS 8.0以前// 前台定位// 1. 导入CoreLocation框架和对应的主头文件#import <

2015-12-07 22:10:01 743 1

原创 iOS开发 - 22.实用技术之地图的基本使用

地图的基本使用设置地图类型 '' // 1.设置地图显示类型 '' /** '' MKMapTypeStandard = 0, // 标准 '' MKMapTypeSatellite, // 卫星 '' MKMapTypeHybrid, // 混合(标准+卫星) ''

2015-12-06 23:16:01 727 1

原创 网络篇 - 06.NSURLSession基本使用

1.概述此前提到过,NSURLSession是目前苹果主要推荐使用的网络请求操作类使用步骤如下 创建NSURLSession对象使用NSURLSession对象创建task对象执行taskTask类型 2.发送GET请求方法一,根据请求对象创建任务后发送请求-(void)get{ // 根据URL创建请求对象 NSURL *url = [NSURL URLWithSt

2015-08-27 21:49:06 505

原创 网络篇 - 07.NSURLSession的应用场景

1.大文件下载创建下载任务-(void)downloadLargeFile{ // 1.创建请求对象 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/videos/minion_02.mp4"]; NSURLRequest *request = [NSURLRequest

2015-08-27 21:47:42 436

原创 网络篇 - 03.NSURLConnection应用场景

1.小文件下载如果文件比较小,下载方式会比较多 直接用NSData的+ (id)dataWithContentsOfURL:(NSURL *)url;利用NSURLConnection发送一个HTTP请求去下载如果是下载图片,还可以利用SDWebImage框架// 小文件下载-(void)smallDataDownload{ // 1.创建URL NSURL *url =

2015-08-26 21:09:47 478

原创 网络篇 - 05.网络数据解析(XML)

1.XML简介XML,全称是Extensible Markup Language,译作“可扩展标记语言”跟JSON一样,也是常用的一种用于交互的数据格式一般也叫XML文档(XML Document)XML举例<videos> <video name="小黄人 第01部" length="30" /> <video name="小黄人 第02部" length="19" />

2015-08-26 21:08:33 495

原创 网络篇 - 04.网络数据解析(JSON)

1.小文件下载如果文件比较小,下载方式会比较多 直接用NSData的+ (id)dataWithContentsOfURL:(NSURL *)url;利用NSURLConnection发送一个HTTP请求去下载如果是下载图片,还可以利用SDWebImage框架// 小文件下载-(void)smallDataDownload{ // 1.创建URL NSURL *url =

2015-08-26 20:58:14 674

原创 网络篇 - 02.NSURLConnection基本使用

0.前述由于目前苹果在推出NSURLSession后更推荐我们使用它,而此前的NSURLConnection已经在最新的Xcode7上已经过期目前最流行的第三方框架AFNetworking也是基于NSURLConnection和NSURLSession的封装为了更好的理解网络通信的内部实现原理,这里会对基本的NSURLConnection、NSURLSession到后续AFN进行探究,更方便我

2015-08-26 20:56:36 679

原创 网络篇 - 01.网络编程概述

1.网络编程概述网络编程是一种实时更新应用数据的常用手段网络编程是开发优秀网络应用的前提和基础移动互联时代,移动互联网应用的特征几乎所有应用都需要用到网络,比如QQ、微博、网易新闻、优酷、百度地图只有通过网络跟外界进行数据交互、数据更新,应用才能保持新鲜、活力如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水移动网络应用 = 良好的UI + 良好的用户体验 + 实时更

2015-08-26 20:54:27 590

原创 第三方框架 - 04.ZipArchive文件解压缩框架

1.基本使用iOS中的文件压缩和解压操作,我们一般通过第三方框架实现下载地址:https://github.com/ZipArchive/ZipArchive要想使用该框架,需要引入libz.dylib框架,再导入头文件Main.h2.压缩文件// 压缩文件-(void)archive{ // 创建需要压缩的对象 NSArray *arr = @[

2015-08-26 16:11:19 615

原创 iOS开发 - 21.实用技术之获取文件的MIMEType类型

1.MIMEType概述首先,我们要了解浏览器是如何处理内容的。在浏览器中显示的内容有 HTML、有 XML、有 GIF、还有 Flash ……那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME Type,也就是该资源的媒体类型。媒体类型通常是通过HTTP协议,由Web服务器告知浏览器的,更准确地说,是通过 Content-Type 来表示的示例Content-Ty

2015-08-26 16:05:37 2378

原创 多线程 - 13.RunLoop应用场景

1.定时器场景通过timer开头的类方法创建定时器时,必须将NSTimer添加到RunLoop中, 才能执行定时器 将NSTimer添加到主线程NSRunLoop的默认模式下, 只有主线程NSRunLoop当前是默认模式才会执行timer将NSTimer添加到主线程NSRunLoop的追踪模式,只有主线程NSRunLoop当前是追踪模式才会执行timerNSRunLoopCommonMode

2015-08-24 12:28:13 778

原创 多线程 - 12.RunLoop总结

1.RunLoop概述参照苹果官方文档,官方API文档RunLoops是线程相关的的基础框架的一部分。一个run loop就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。使用run loop可以让你的线程在有任务的时候执行任务,而没任务的时候处于休眠状态。基本作用如下:保持程序的持续运行处理App中的各种事件(比如触摸事件、定时器事件、Selector事件)节省CPU资源,提高

2015-08-23 17:06:04 574

原创 第三方框架 - 03.SDWebImage框架

1.SDWebImage图片缓存框架概述我们可以利用此框架来处理下载网络图片和自动缓存等需求,涉及到异步加载图片源和自动缓存是目前缓存图片框架比较流行的框架,简单易用在此前有专门介绍其底层实现原理的文章,请参考http://blog.csdn.net/mrrightzj/article/details/478666092.基本使用直接下载一张图片 NSURL *url = [NSU

2015-08-23 09:35:40 428

原创 多线程 - 11.图片缓存技术(SDWebImage框架内部实现)

1.图片缓存概述在iOS项目开发中,我们经常需要从网络上获取图片显示到我们的界面上,示例界面 图片Image利用UITableView实现上述应用,若是我们直接在设置cell内容的数据源方法中直接通过从网络上获取的数据设置图片,会造成两个问题: 我们一般将耗时操作放在子线程中执行,若是放在主线程中(当图片资源较大时)会阻塞主线程另外,在我们滑动cell时,会造成图片的重复下载2.解决图片

2015-08-22 23:27:17 1010

原创 iOS开发 - 20.实用技术之快速拼接文件的沙盒路径

1.应用沙盒概述每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒应用沙盒结构分析: 应用程序包:包含了所有的资源文件和可执行文件Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录tmp:保存应用运行时所需的临时数据,使用完毕后再

2015-08-22 22:00:24 2497

原创 多线程 - 10.NSOperation的使用示例

1.NSOperationQueue概述NSOperationQueue的作用 NSOperation可以调用start方法来执行任务,但默认是同步执行的如果将NSOperation添加到NSOperationQueue(操作队列)中,系统会自动异步执行NSOperation中的操作添加操作到NSOperationQueue中-(void)addOperation:(NSOperation

2015-08-22 19:04:06 447

原创 多线程 - 09.NSOperation基本使用

1.概述NSOperation的作用 配合使用NSOperation和NSOperationQueue也能实现多线程编程NSOperation和NSOperationQueue实现多线程的具体步骤 先将需要执行的操作封装到一个NSOperation对象中然后将NSOperation对象添加到NSOperationQueue中系统会自动将NSOperationQueue中的NSOperat

2015-08-22 19:01:13 372

原创 多线程 - 08.GCD其他使用

1.GCD线程之间的通信使用异步函数+除了主队列之外的队列创建子线程,在子线程中执行下载操作(耗时操作)在子线程中添加任务到主队列(更新UI操作),同步异步都可-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // 1.创建并发队列 dispatch_queue_t queue = dispatch

2015-08-22 19:00:27 532

原创 多线程 - 07.GCD函数和队列组合示例

1.GCD基本使用(异步函数+并发队列)可以看到,系统自动给开辟了新的子线程来执行这三个任务,且由于时并发队列,系统开辟了三个子线程注意:开辟多少个子线程由系统决定,三个任务依次从队列中取出放在不同的子线程执行,但是由于CPU调度子线程是由系统控制的,所以任务执行的顺序不定,并没有违背队列中任务的先进先出原则-(void)touchesBegan:(NSSet *)touches withEv

2015-08-21 22:40:05 453

原创 多线程 - 06.GCD概述

1.GCD简介全称是Grand Central Dispatch,可译为“牛逼的中枢调度器”纯C语言,但是提供了非常多功能强大的函数,非常方便GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码2.任

2015-08-21 20:23:04 419

原创 多线程 - 05.线程间的基础通信操作

1.概述线程间通信概念:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信线程间通信的体现 1个线程传递数据给另1个线程在1个线程中执行完特定任务后,转到另1个线程继续执行任务线程间通信常用方法// 回到主线程- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDo

2015-08-20 21:57:39 409

原创 多线程 - 04.线程状态以及线程安全

1.线程的状态线程在从创建到销毁的过程中有多种状态,对应如下: 新建(New):当新建一个子线程时,线程处于新建状态就绪(Runnable):调用[NSThread start]方法时,线程进入就绪状态或CPU调度完当前线程后,再去调用其他线程时,sleep状态结束或者得到同步锁时重新恢复就绪状态运行(Running):当CPU调度当前线程时,线程处于运行状态阻塞(Blocked):当线程

2015-08-20 21:17:34 706

原创 多线程 - 03.NSThread使用

1.NSThread基本使用-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // 1.创建子线程 /* Target: 子线程需要调用谁的方法 selector: 被子线程调用的方法 object: 调用方法时, 给方法传递的参数 */ // 注意: 如果线程

2015-08-20 21:13:13 404

原创 多线程 - 02.利用pthread实现多线程

1.多线程使用基本方法获取当前线程// 获取主线程NSLog(@"%@", [NSThread mainThread]);// 打印结果:<NSThread: 0x7fdd31c12450>{number = 1, name = main}// 获取当前线程NSLog(@"%@", [NSThread currentThread]);// 若是在主线程中,则和主线程打印结果一样,若是子

2015-08-20 21:11:56 455

原创 多线程 - 01.多线程概述

1.进程进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内比如同时打开迅雷、Xcode,系统就会分别启动2个进程通过“活动监视器”可以查看Mac系统中所开启的进程2.线程1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程),进程本身是不具备执行任务的能力的一个进程(程序)的所有任务都在线程中执行比如使用酷狗播放音乐、使用

2015-08-20 21:10:42 462

原创 iOS开发概述 - 17.UIView动画和核心动画对比

1.UIView实现转场动画使用UIView动画函数实现转场动画——单视图+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completi

2015-08-09 19:28:33 523

原创 iOS开发概述 - 16.CAAnimation(核心动画实例)

1.CAPropertyAnimation(属性动画)是CAAnimation的子类,也是个抽象类,要想创建动画对象,应该使用它的两个子类:CABasicAnimationCAKeyframeAnimation要想利用CAPropertyAnimation实现动画,通过设定动画的keyPath属性来实现keyPath:通过指定CALayer的一个属性名称为keyPath(NSString类型

2015-08-09 19:27:29 656

原创 iOS开发概述 - 15.核心动画概述(Core Animation)

1.核心动画概述Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍。也就是说,使用少量的代码就可以实现非常强大的功能。Core Animation可以用在Mac OS X和iOS平台Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程要注意的是,Core Animation是直接作用在C

2015-08-08 22:19:39 605

原创 iOS开发概述 - 14.CALayer隐式动画

1.隐式动画概述每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画当对非Root Layer的部分属性进行修改时,默认会自动产生一些动画效果,这种效果我们称之为隐式动画这些属性称为Animatable Properties(可动画属性),在系统头文件属性

2015-08-08 22:15:14 662

原创 iOS开发概述-13.UI控件图层属性CALayer

1.CALayer概述在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层 @property(nonatomi

2015-08-08 22:10:50 432

原创 iOS开发 - 19.手势解锁

1.效果图2.代码实现自定义View// .m文件#import "ZJLockView.h"#define kBTNCOUNT 9@interface ZJLockView ()/** * 保存选中按钮 */@property (nonatomic, strong) NSMutableArray *selectedBtns;/** * 记录当前点位置 */@proper

2015-08-07 08:03:55 684

原创 Quartz2D - 08.图片擦除效果

1.效果图 2.代码实现// 在storyboard上给imageView添加拖拽手势// 监听手势事件- (IBAction)pan:(UIPanGestureRecognizer *)sender { // 获取当前位置 CGPoint curP = [sender locationInView:self.iv]; // 计算擦除的frame CGFloat

2015-08-07 07:54:53 429

原创 Quartz2D-07.利用Quartz实现自定义截图效果

效果图 代码实现,自定义ImageView#import "ZJCutImageView.h"@interface ZJCutImageView ()/** * 拖拽产生的蒙版view */@property (nonatomic, weak) UIView *panView;/** * 记录当前手指位置 */@property (nonatomic, assign) CGPoi

2015-08-05 23:21:03 585

原创 Quartz2D-06.利用贝瑟尔曲线画饼状图

效果图 代码实现#import "ZJCakeView.h"@implementation ZJCakeView- (void)drawRect:(CGRect)rect { // 计算需要的位置 CGFloat radius = self.bounds.size.width * 0.5; CGPoint center = CGPointMake(radius, sel

2015-08-05 22:38:37 826

原创 Quartz2D-05.利用贝瑟尔曲线实现进度条功能

效果图 代码实现// .h文件#import <UIKit/UIKit.h>@interface ZJProgressView : UIView/** * 传入进度 */@property (nonatomic, assign) CGFloat progress;@end//.m文件#import "ZJProgressView.h"@implementation ZJProgr

2015-08-05 22:18:08 1247

原创 Quartz2D - 04.利用贝瑟尔路径(UIBezierPath)绘制基本图形

1.基本形状// 自定义View#import "DrawView.h"@implementation DrawView// 实现drawRect方法绘图-(void)drawRect:(CGRect)rect{ // 画线// [self drawLine1];// [self drawLine2]; // 画曲线// [self drawQuad

2015-08-05 21:14:49 707

原创 iOS开发-18.两种方法实现抽屉效果

1.抽屉效果实现方法1:利用触摸方法touches实现配图// 触摸事件实现#import "ZJDrawerTouchViewController.h"#define SCREEN [UIScreen mainScreen].bounds#define kScreenW [UIScreen mainScreen].bounds.size.width#define kScreenH [UIS

2015-08-05 21:12:54 1306

原创 iOS开发概述-12.手势处理

1.手势识别概述如果想监听一个view上面的触摸事件,之前的做法是 自定义一个view实现view的touches方法,在方法内部实现具体处理代码但是通过touches方法监听view触摸事件,有很明显的几个缺点 必须得自定义view由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件不容易区分用户的具体手势行为iOS 3.

2015-08-04 21:50:58 589

原创 iOS开发-17.触摸事件示例

1.示例1(视图穿透效果)#import "RedView.h"@interface RedView ()// 先写以下属性,从代码往storyboard中拖线,不然无法拿到btn属性@property (nonatomic, weak) IBOutlet UIButton *btn;@end@implementation RedView// 重写hitTest方法// 事件传递过程:

2015-08-03 23:23:51 525

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除