主線程實現(xiàn)
定義屬性
/// 根視圖是滾動視圖
@property(nonatomic,strong)UIScrollView*scrollView;/// 圖像視圖@property(nonatomic,weak)UIImageView*imageView;/// 網(wǎng)絡下載的圖像@property(nonatomic,weak)UIImage*image;
loadView
加載視圖層次結(jié)構(gòu)
用純代碼開發(fā)應用程序時使用
功能和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
視圖加載完成后執(zhí)行
可以做一些數(shù)據(jù)初始化的工作
如果用純代碼開發(fā),不要在此方法中設置界面 UI
- (void)viewDidLoad {? ? [superviewDidLoad];// 下載圖像[selfdownloadImage];}
下載網(wǎng)絡圖片
- (void)downloadImage {
// 1. 網(wǎng)絡圖片資源路徑
NSURL*url = [NSURLURLWithString:@"http://c.hiphotos.baidu.com/image/pic/item/4afbfbedab64034f42b14da1aec379310a551d1c.jpg"];
// 2. 從網(wǎng)絡資源路徑實例化二進制數(shù)據(jù)(網(wǎng)絡訪問)
NSData*data = [NSDatadataWithContentsOfURL:url];//
3. 將二進制數(shù)據(jù)轉(zhuǎn)換成圖像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> 實現(xiàn)代理方法 - 告訴滾動視圖縮放哪一個視圖
- (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];