主线程实现
定义属性
/// 根视图是滚动视图
@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];