一、多线程

1、主队列:处理多点触控和所有UI操作(不能阻塞、主要同步更新UI)

dispatch_queue_t mainQueue = dispatchg_get_main_queue(); //获得主线程
Dispatch_async(queue ,^{ }); //异步执行Block
dispatch_queue_t Queue = dispatch_queue_create(“name”,NULL);//创建一个

2、更新UI必须在主线程中执行,有两种方法

 //更新UI必须在主线程中执行,有两种方法,
//一种是指定委托在主线程中
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration
delegate:nil
delegateQueue:[NSOperationQueue mainQueue]];
NSURLSessionDownLoadTask *task;
task = [session downloadTaskWithRequest:request
completionHandler:^(NSURL *localfile,NSURLResponse *response,NSError *error ){
//这里就可以直接调用UI操作了
}];
[task resume]; //一种是不指定委托:
//然后如果在completionHandler中调用主线程的话,就相当于completionHandler在一个非主线程的队列里调用主线程
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
NSURLSessionDownLoadTask *task;
task = [session downloadTaskWithRequest:request
completionHandler:^(NSURl *localfile,NSURLResponse *response,NSError,error){
//因为没有调用主线程委托,所以采用调用主线程异步队列:两种方式才能调用UI操作
dispatch_async(dispatch_get_main_queue(), ^{ // 这里就可以调用UI操作 });
//或者:
[self performSelectorOnMainThread:@selector(doUIThingsFunction) withObject:nil waitUtilDone:NO];
}];
//重新启动(默认是挂起的)
[task resume];

二、UISCrollView

1、
//contentSize代表滚动的范围
scrollView.contentSize = CGSizeMake(1,1);

//当前所示的范围(左上角的坐标)
CGPoint *visibleP= scrollView.contenetOffSet;

2、缩放

// 1.设置缩放比例
scrollView.minimumZoomScale = 0.5;
scrollView.maximumZoomScale = 2.0;

//2、缩放委托
-(UIView *) viewForZoomingInScrollVIew:(UIScrollView *)sender;//返回哪个view可以缩放

//3、或者实现手势缩放
@property (nonatomic) float zoomScale;
-(void)setZoomingScale:(float)scale animated:(BOOL)animated;
-(void)zoomToRect:(CGRect)zoomRect animated:(BOOL)animated;

三、运行demo

这个demo是下载网上的图片,采用多线程的方法[有主线程也有另开线程], 同时将图片显示在我们的UIScrollView中,设置缩放比列,同时也会在下载过程设置加载的图像

1、运行效果如下:

2、注意的一些问题

(1  我们这里的UIimage 没有并使用synthesize但是没有报错,是因为我们并没有合成实例变量,而是采用imageview.image来定义的,没有使用_image

(2

第一个:NSURLSessionConfiguration 这里有三种会话模式,default默认的,ephemeral临时的,background运行在后台的

第二个:多线程任务中,网络请求的漫长过程中可能存在后续改动,URL地址可能会受到变动,如果变动的,我们就会放弃获取到的内容。

第三个:上面的执行是存在于非主队列中的, 但是下面要执行的是指图像信息的需要更新UI操作,最好是在主队列中执行

demo下载地址;http://pan.baidu.com/s/1qWyWLIW

OC开发_Storyboard——多线程、UIScrollView的更多相关文章

  1. OC开发_Storyboard——iPad开发

    iPad开发(Universal Applications) 一.iPad 1.判断是否在iPad上 BOOL iPad = ([[UIDevice currentDevice] userInterf ...

  2. OC开发_Storyboard——block和动画

     一.协议 @optional :可选的 @requied :必须实现的  二.block 代码块 1. 以一个^开头,然后是参数,然后是一个大括号,包含我们的代码块 [aDictionary enu ...

  3. OC开发_Storyboard——MapKit

    一.Core  Location 1.基本对象 @propertys: coordinate, altitude, horizontal/verticalAccuracy, timestamp, sp ...

  4. OC开发_Storyboard——AutoLayout

    一.autolayout 自动布局: 1. 设置所有视图框架的三种方法,可以通过代码创建也可以storyboard设置 = 规则 (1 蓝线+约束:(位置) 使用蓝线,根据蓝线拖动控件,只是告诉Xco ...

  5. OC开发_Storyboard——UITableView

    一.tableView 1.datasource数据源 (1 构造每一个tableVIewCell的方法:cellForRowAtIndexPath,这里的 dequeueReusableCellWi ...

  6. OC开发_Storyboard——Core Data

    一 .NSManagedObjectContext 1.我们要想操作Core Data,首先需要一个NSManagedObjectContext2.那我们如何获得Context呢:创建一个UIMana ...

  7. OC开发_Storyboard——UIApplication和网络活动指示器

    一.UIApplication 只有一个实例: UIApplication *myApplication = [UIApplication sharedApplication]; 属性如果设置为YES ...

  8. OC开发_Storyboard——绘制和视图

    1.绘制 不要调用drawRect.调用setNeedsDisplay相当于告知系统视图需要重绘, 它会去调用drawRect,更新屏外缓冲器 2.UIBezierPath绘制图形,   设置图像op ...

  9. OC开发_Storyboard——NaviationController简单例子

    一个简单的Navigation的例子,demo里面用到了上一个demo的MVC,可以参考下:http://www.cnblogs.com/daomul/p/4426063.html 建立一个Nav其实 ...

随机推荐

  1. 用 CSS 实现打印显示底色

    上一篇有讲到如何在浏览器端实现打印功能.后面发现有个问题,就是表格表头有背景颜色,但是实际打印出来无背景颜色.网上的方法主要有以下几种实现方式: 1.把背景颜色写成行内样式,如下图所示: 但是发现这样 ...

  2. js学习笔记20----addClass,removeClass函数封装

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. CentOS安装Emacs文本编辑器

    我这里安装的是:emacs.24.2 下载地址:http://ftp.gnu.org/pub/gnu/emacs/emacs-24.2.tar.gz 下载文件:emacs-24.2.tar.gz 步骤 ...

  4. dom元素改变监听

    function domChange(domId, callback) { // select the target node var target = document.getElementById ...

  5. Oracle过程及函数的参数模式详解

    一.In.out.in out模式 在Oracle中过程与函数都可以有参数,参数的类型可以指定为in.out.in out三种模式. 三种参数的具体说明,如下图所示: (1)in模式 in模式是引用传 ...

  6. Android SDK的安装教程

      Android4.1虽说已经发布了好些天,但由于的我手机比较坑,系统依旧保持在2.3.4.0的都是可望不可即的了,就别说4.1.由于资金的问题,没法换手机,只能另想方法,通过在笔记本上装andro ...

  7. 简易2D横版RPG游戏制作

    Unity学习笔记1 简易2D横版RPG游戏制作 http://m.blog.csdn.net/article/details?id=24601905

  8. ModelState.AddModelError使用

    后台: ModelState.AddModelError("userPwd", "请输入密码!"); ModelState是一个字典类型,这句话的作用是向Mod ...

  9. 第四章 Spring.Net 如何管理您的类___让对象了解自己的容器

    我们在开发中,经常需要让对象了解自己所在的容器的信息,例如,有时我们需要让对象知道,对象所在容器的引用是什么,或者是对象在容器中的名称是什么 .Spring.Net 中提供了两个接口,我们使用这两个接 ...

  10. spring 事物管理没起到作用

    今天在做项目的时候发现配置的spring 事物管理没起到作用.可是配置又是依据官网配置的,不可能会错.最后发现使mysql的问题 普通情况下,mysql会默认提供多种存储引擎,你能够通过以下的查看: ...