线程间通讯

主线程实现

定义属性

/// 根视图是滚动视图

@property(nonatomic,strong)UIScrollView*scrollView;/// 图像视图@property(nonatomic,weak)UIImageView*imageView;/// 网络下载的图像@property(nonatomic,weak)UIImage*image;

loadView

加载视图层次结构

用纯代码开发应用程序时使用

功能和Storyboard&XIB是等价的

如果重写了loadView,Storyboard&XIB都无效

- (void)loadView {    _scrollView = [[UIScrollViewalloc] init];    _scrollView.backgroundColor= [UIColororangeColor];self.view= _scrollView;UIImageView*iv = [[UIImageViewalloc] init];    [self.viewaddSubview:iv];    _imageView = iv;}

viewDidLoad

视图加载完成后执行

可以做一些数据初始化的工作

如果用纯代码开发,不要在此方法中设置界面 UI

- (void)viewDidLoad {    [superviewDidLoad];// 下载图像[selfdownloadImage];}

下载网络图片

- (void)downloadImage {

// 1. 网络图片资源路径

NSURL*url = [NSURLURLWithString:@"http://c.hiphotos.baidu.com/image/pic/item/4afbfbedab64034f42b14da1aec379310a551d1c.jpg"];

// 2. 从网络资源路径实例化二进制数据(网络访问)

NSData*data = [NSDatadataWithContentsOfURL:url];//

3. 将二进制数据转换成图像UIImage*image = [UIImageimageWithData:data];

// 4. 设置图像self.image= image;}

设置图片

- (void)setImage:(UIImage*)image {// 1. 设置图像视图的图像self.imageView.image= image;// 2. 按照图像大小设置图像视图的大小[self.imageViewsizeToFit];// 3. 设置滚动视图的 contentSizeself.scrollView.contentSize= image.size;}

设置滚动视图的缩放

1> 设置滚动视图缩放属性

// 1> 最小缩放比例self.scrollView.minimumZoomScale=0.5;

// 2> 最大缩放比例self.scrollView.maximumZoomScale=2.0;

// 3> 设置代理self.scrollView.delegate=self;

2> 实现代理方法 - 告诉滚动视图缩放哪一个视图

- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView {returnself.imageView;}

3> 跟踪scrollView缩放效果

- (void)scrollViewDidZoom:(UIScrollView*)scrollView {NSLog(@"%@", NSStringFromCGAffineTransform(self.imageView.transform));}

线程间通讯

在后台线程下载图像

[selfperformSelectorInBackground:@selector(downloadImage) withObject:nil];

在主线程设置图像

[selfperformSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];

推荐阅读更多精彩内容