//iOS7之后的屬性,設置為NO,目的是消除視圖控制器對滾動視圖的影響
self.automaticallyAdjustsScrollViewInsets = NO;
//取到圖片在工程中的路徑
NSString *path = [[NSBundle mainBundle] pathForResource:@"3" ofType:@"png"];
//通過路徑來得到圖片
UIImage *image = [UIImage imageWithContentsOfFile:path];
//imageWithContentsOfFile 和imageNamed:得到圖片的區(qū)別(面試中問的頻率比較高的問題)
//官方提供的允許每個應用程序開辟的最大活躍內(nèi)存不要超過200M(分機型)
// imageNamed: (一般加載占用磁盤比較小的圖片(幾kb或者幾十kb),此方法會將圖片加載到應用程序的活躍內(nèi)存中)
//imageWithContentsOfFile (此方法用于加載占用磁盤空間比較大的圖片,圖片不會占用應用程序的活躍內(nèi)存)
//imageView的尺寸設為圖片的尺寸
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,image.size.width, image.size.height)];
imageView.image = image;
//創(chuàng)建滾動視圖(視圖控件),應用場景:用于顯示比scrollView本身要大的視圖(可以一個視圖,也可以是多個視圖size的和)
//添加到scrollView上的視圖,叫做scrollView的內(nèi)容視圖
//設置內(nèi)容視圖的滾動區(qū)域,(設置為imageView的大小)
//contentSize 一般精確設置為內(nèi)容視圖的大小(重要)
//要想讓內(nèi)容視圖能夠滾動查看,必須保證contentSize比scrollView的size要大
scrollView.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height);
//隱藏橫向的滾動條
scrollView.showsHorizontalScrollIndicator = NO;
//隱藏縱向的滾動條
scrollView.showsVerticalScrollIndicator = NO;
//設置內(nèi)容視圖邊界的回彈效果,默認為YES
scrollView.bounces= NO;
//contentOffset 偏移量(scrollView的起始點(scrollView左上角的點),相對于內(nèi)容視圖起始點的偏移量)(重要)
//坐標是將內(nèi)容視圖的起始點作為坐標原點
//contentOffset 默認值為(0,0)
//設置scrollView 對內(nèi)容視圖的分頁屬性,默認為NO,每一頁的大小為scrollView的size
//contentSize
contentSize是UIScrollView可以滾動的區(qū)域。在我的理解中,我把UIScrollView看成是具有上下兩層的一個復合視圖,frame控制著上層的大小,我們看到的UIScrollView的大小實際就是frame的大小,上層固定不動,顯示的變化,由下層的滾動來控制。而下層滾動的區(qū)域的大小,就是由contentSize來控制的了。例如:若frame = (0, 0, 320, 480) contentSize = (320, 960),代表本UIScrollView可以上下滾動,滾動區(qū)域為frame大小的兩倍。
//contentInset
contentInset的API文檔的解釋是"內(nèi)容視圖嵌入到封閉的滾動視圖的距離"??梢岳斫鉃閮?nèi)容視圖的上下左右四個邊擴展出去的大小。contentInset的單位是UIEdgeInsets,默認值為UIEdgeInsetsZero,也就是沒有擴展的邊。下面解釋一下UIEdgeInsets,它是一個結構體,定義如下:
typedefstructUIEdgeInsets {
CGFloattop, left, bottom, right;// specify amount to inset (positive) for each of the edges. values can be negative to 'outset'
} UIEdgeInsets;
分別代表著上邊界,左邊界,底邊界,右邊界,擴展出去的值。
//scrollView.pagingEnabled = YES;
//設置scrollView的代理
//對內(nèi)容視圖進行縮放的時候,不要理會contentSize的變化
//設置scrollView內(nèi)容視圖的最大縮放倍數(shù)
scrollView.maximumZoomScale = 2.0;
//設置最小縮放倍數(shù)
scrollView.minimumZoomScale = 0.5;
//打開分頁屬性
//每次翻頁的時候,都會伴有一個減速到停止的過程
_scrollView.pagingEnabled = YES;
//設置scrollView要進行縮放的內(nèi)容視圖
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
//返回imageView
return [scrollView.subviews objectAtIndex:0];
}
//對scrollView內(nèi)容視圖開始進行拖拽的時候,調(diào)用此方法
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
NSLog(@"beginDragging!");
}
//scrollView滾動的時候,調(diào)用此方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
NSLog(@"didScroll!");
}
//結束拖拽的時候,調(diào)用此方法
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
NSLog(@"didEndDragging!!");
}
//scrollView減速到靜止的時候,調(diào)用此方法(此方法被調(diào)用,需要有減速的過程)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
NSLog(@"didEndDecelerating!!");
}