您的位置:首页 > 移动开发 > IOS开发

IOS7笔记-10、多线程、滚动视图

2016-06-11 17:12 357 查看
1、滚动视图使用方方法:

@interface ImageViewController ()<UIScrollViewDelegate>//声明委托
@property (strong, nonatomic) UIImageView *imageView;
@property (strong, nonatomic) UIImage *image;
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIActivityIndicatorView *spinner;
@end

-(void)setScrollView:(UIScrollView *)scrollView
{
_scrollView = scrollView;
_scrollView.minimumZoomScale = 0.2; //设置缩放特性
_scrollView.maximumZoomScale = 2.0; //设置缩放特性
_scrollView.delegate = self; //设置委托
self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero; //设置滚动视图可移动特性
}

//实现缩放委托
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}

-(UIImageView *)imageView
{
if (!_imageView) {
_imageView = [[UIImageView alloc] init];
}
return _imageView;
}

-(UIImage *)image
{
return self.imageView.image;
}

-(void)setImage:(UIImage *)image
{
self.imageView.image = image;
[self.imageView sizeToFit];
self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero; //设置滚动视图可移动特性
}

-(void)viewDidLoad
{
[super viewDidLoad];
[self.scrollView addSubview:self.imageView];
}


2、多线程调用方法

-(void)setImageURL:(NSURL *)imageURL
{
_imageURL = imageURL;
//self.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:self.imageURL]];
[self startDownloadingImage];
}

-(void)startDownloadingImage
{
self.image = nil;
if (self.imageURL) {
[self.spinner startAnimating];
NSURLRequest *request = [NSURLRequest requestWithURL:self.imageURL];//设置请求对象
NSURLSessionConfiguration *congiguration = [NSURLSessionConfiguration ephemeralSessionConfiguration];//设置请求任务配置方法
NSURLSession *session = [NSURLSession sessionWithConfiguration:congiguration];//定义URL任务
NSURLSessionDownloadTask *task = [session downloadTaskWithRequest:request
completionHandler:^(NSURL *locationfile, NSURLResponse *response, NSError *error) {
if (!error) {
if ([request.URL isEqual:self.imageURL]) {
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:locationfile]];
//self.image = image;
dispatch_async(dispatch_get_main_queue(), ^{
self.image = image;
});                          //[self performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];
}
}
}];//定义一个线程任务 在子线程中调用网络下载,并把在下载成功的图片在主线程中调用显示
[task resume];//恢复任务线程执行,创建任务时默认是挂起状态,需要恢复才能真正执行
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: