主線程實(shí)現(xiàn)
定義屬性
/// 根視圖是滾動視圖
@property(nonatomic,strong)UIScrollView*scrollView;/// 圖像視圖@property(nonatomic,weak)UIImageView*imageView;/// 網(wǎng)絡(luò)下載的圖像@property(nonatomic,weak)UIImage*image;
loadView
加載視圖層次結(jié)構(gòu)
用純代碼開發(fā)應(yīng)用程序時(shí)使用
功能和Storyboard&XIB是等價(jià)的
如果重寫了loadView,Storyboard&XIB都無效
- (void)loadView {? ? _scrollView = [[UIScrollViewalloc] init];? ? _scrollView.backgroundColor= [UIColororangeColor];self.view= _scrollView;UIImageView*iv = [[UIImageViewalloc] init];? ? [self.viewaddSubview:iv];? ? _imageView = iv;}
viewDidLoad
視圖加載完成后執(zhí)行
可以做一些數(shù)據(jù)初始化的工作
如果用純代碼開發(fā),不要在此方法中設(shè)置界面 UI
- (void)viewDidLoad {? ? [superviewDidLoad];// 下載圖像[selfdownloadImage];}
下載網(wǎng)絡(luò)圖片
- (void)downloadImage {
// 1. 網(wǎng)絡(luò)圖片資源路徑
NSURL*url = [NSURLURLWithString:@"http://c.hiphotos.baidu.com/image/pic/item/4afbfbedab64034f42b14da1aec379310a551d1c.jpg"];
// 2. 從網(wǎng)絡(luò)資源路徑實(shí)例化二進(jìn)制數(shù)據(jù)(網(wǎng)絡(luò)訪問)
NSData*data = [NSDatadataWithContentsOfURL:url];//
3. 將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成圖像UIImage*image = [UIImageimageWithData:data];
// 4. 設(shè)置圖像self.image= image;}
設(shè)置圖片
- (void)setImage:(UIImage*)image {// 1. 設(shè)置圖像視圖的圖像self.imageView.image= image;// 2. 按照圖像大小設(shè)置圖像視圖的大小[self.imageViewsizeToFit];// 3. 設(shè)置滾動視圖的 contentSizeself.scrollView.contentSize= image.size;}
設(shè)置滾動視圖的縮放
1> 設(shè)置滾動視圖縮放屬性
// 1> 最小縮放比例self.scrollView.minimumZoomScale=0.5;
// 2> 最大縮放比例self.scrollView.maximumZoomScale=2.0;
// 3> 設(shè)置代理self.scrollView.delegate=self;
2> 實(shí)現(xiàn)代理方法 - 告訴滾動視圖縮放哪一個(gè)視圖
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView {returnself.imageView;}
3> 跟蹤scrollView縮放效果
- (void)scrollViewDidZoom:(UIScrollView*)scrollView {NSLog(@"%@", NSStringFromCGAffineTransform(self.imageView.transform));}
線程間通訊
在后臺線程下載圖像
[selfperformSelectorInBackground:@selector(downloadImage) withObject:nil];
在主線程設(shè)置圖像
[selfperformSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];