UIScrollView常用属性和代理方法&线程间通讯(下载图片)

(一)UIScrollView常见属性

(1)属性:

 1     // 最大缩放比
 2     _scrollView.maximumZoomScale = 3.0;
 3     // 最小缩放比
 4     _scrollView.minimumZoomScale = 0.2;
 5     // 偏移大小
 6     _scrollView.contentSize = self.img.size;
 7     // 偏移量,表一开始在哪
 8     _scrollView.contentOffset = CGPointMake(300, 300);
 9     // 上左下右内边距,变相增加偏移大小
10     _scrollView.contentInset = UIEdgeInsetsMake(100, 100, 100, 100);
11     // 默认是YES,拖动到边缘是否弹簧回来
12     _scrollView.bounces = YES;
13     // 默认是NO,当bounces和下面的属性都是YES,那么相应的水平垂直就永远有弹簧效果
14     _scrollView.alwaysBounceHorizontal = YES;
15     _scrollView.alwaysBounceVertical = NO;
16     // 翻页,用于scroll的子类UICollectView或者UITableView中,设置新特性或者图表等
17     _scrollView.pagingEnabled = YES;
18     // 是否滚动
19     _scrollView.scrollEnabled = YES;

代理方法中最主要的有两个,一个是缩放哪个视图,一个是监视这个视图的状态(transform一改变就会触发)

 1 // 代理
 2 
 3 - (UIView*)viewForZoomingInScrollView:(nonnull UIScrollView *)scrollView{
 4     return self.imgView;
 5 }
 6 
 7 - (void)scrollViewDidZoom:(nonnull UIScrollView *)scrollView{
 8     // 形变仿射矩阵
 9     NSLog(@"%@",NSStringFromCGAffineTransform(self.imgView.transform));
10     
11 }

下面我们看一下transform这个属性

是一个结构体。在代理方法scrollViewDidZoom方法中监听transform状态时,观察数值

可以得到结论:

a和d控制缩放比例

tx,ty应该是位移

而旋转应该是由a,b,c,d一起控制的。

(二)线程间通讯:

简单点的线程间通讯就是在网络访问中获取到数值(这个过程永远都是耗时的,是异步的),所以在子线程获取url,在主线程更新UI,就是线程间通讯的简单描述。

可以用NSThread方法来完成。

 

// 子线程下载
    [self performSelectorInBackground:@selector(downloadImage) withObject:nil];

// 主线程更新
  [self performSelectorOnMainThread:@selector(setImg:) withObject:_img waitUntilDone:NO]; } - (void)setImg:(UIImage *)img{ NSLog(@"%@,%s",[NSThread currentThread],__FUNCTION__); self.imgView.image = img; [self.imgView sizeToFit]; }

 

posted @ 2015-08-29 16:01  珍妮是谁  阅读(203)  评论(0编辑  收藏  举报