IOS UIScrollView,滑動視圖

//iOS7之后的屬性,設置為NO,目的是消除視圖控制器對滾動視圖的影響

self.automaticallyAdjustsScrollViewInsets = NO;

//取到圖片在工程中的路徑

NSString *path = [[NSBundle mainBundle] pathForResource:@"3" ofType:@"png"];

//通過路徑來得到圖片

UIImage *image = [UIImage imageWithContentsOfFile:path];

//imageWithContentsOfFile 和imageNamed:得到圖片的區別(面試中問的頻率比較高的問題)

//官方提供的允許每個應用程序開辟的最大活躍內存不要超過200M(分機型)

// imageNamed: (一般加載占用磁盤比較小的圖片(幾kb或者幾十kb),此方法會將圖片加載到應用程序的活躍內存中)

//imageWithContentsOfFile (此方法用于加載占用磁盤空間比較大的圖片,圖片不會占用應用程序的活躍內存)

//imageView的尺寸設為圖片的尺寸

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,image.size.width, image.size.height)];

imageView.image = image;

//創建滾動視圖(視圖控件),應用場景:用于顯示比scrollView本身要大的視圖(可以一個視圖,也可以是多個視圖size的和)

//添加到scrollView上的視圖,叫做scrollView的內容視圖

//設置內容視圖的滾動區域,(設置為imageView的大小)

//contentSize 一般精確設置為內容視圖的大小(重要)

//要想讓內容視圖能夠滾動查看,必須保證contentSize比scrollView的size要大

scrollView.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height);

//隱藏橫向的滾動條

scrollView.showsHorizontalScrollIndicator = NO;

//隱藏縱向的滾動條

scrollView.showsVerticalScrollIndicator = NO;

//設置內容視圖邊界的回彈效果,默認為YES

scrollView.bounces= NO;

//contentOffset 偏移量(scrollView的起始點(scrollView左上角的點),相對于內容視圖起始點的偏移量)(重要)

//坐標是將內容視圖的起始點作為坐標原點

//contentOffset 默認值為(0,0)

//設置scrollView 對內容視圖的分頁屬性,默認為NO,每一頁的大小為scrollView的size

//contentSize

contentSize是UIScrollView可以滾動的區域。在我的理解中,我把UIScrollView看成是具有上下兩層的一個復合視圖,frame控制著上層的大小,我們看到的UIScrollView的大小實際就是frame的大小,上層固定不動,顯示的變化,由下層的滾動來控制。而下層滾動的區域的大小,就是由contentSize來控制的了。例如:若frame = (0, 0, 320, 480) contentSize = (320, 960),代表本UIScrollView可以上下滾動,滾動區域為frame大小的兩倍。

//contentInset

contentInset的API文檔的解釋是"內容視圖嵌入到封閉的滾動視圖的距離"。可以理解為內容視圖的上下左右四個邊擴展出去的大小。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的代理

//對內容視圖進行縮放的時候,不要理會contentSize的變化

//設置scrollView內容視圖的最大縮放倍數

scrollView.maximumZoomScale = 2.0;

//設置最小縮放倍數

scrollView.minimumZoomScale = 0.5;

//打開分頁屬性

//每次翻頁的時候,都會伴有一個減速到停止的過程

_scrollView.pagingEnabled = YES;

//設置scrollView要進行縮放的內容視圖

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

//返回imageView

return [scrollView.subviews objectAtIndex:0];

}

//對scrollView內容視圖開始進行拖拽的時候,調用此方法

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{

NSLog(@"beginDragging!");

}

//scrollView滾動的時候,調用此方法

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

NSLog(@"didScroll!");

}

//結束拖拽的時候,調用此方法

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

NSLog(@"didEndDragging!!");

}

//scrollView減速到靜止的時候,調用此方法(此方法被調用,需要有減速的過程)

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

NSLog(@"didEndDecelerating!!");

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 掌握 UIScrollView的常見屬性 UIScrollView的常用代理方法 UIScrollView的縮放 ...
    JonesCxy閱讀 2,770評論 1 12
  • 在iOS中,滾動視圖UIScrollView用于查看大于屏幕的內容。Scroll View有兩個主要目的: 讓用戶...
    pro648閱讀 38,504評論 4 37
  • 我是個很懶的人。 其實,很早就想好好開始寫東西,很早以前就想,會不會有一天,我變成一個用文字和世界對話的人。我還記...
    淺淺的夕陽閱讀 187評論 0 1
  • 想起一個月前剛來的時候,一個人坐brt不習慣,一個人上下班不習慣,一個人吃飯也很不習慣,我是一個害怕孤獨的人,害怕...
    米魚的記憶閱讀 148評論 0 2
  • “你作為投資者,必須牢記且絕對不能觸犯的鐵律是:永遠不要押上全部!”在任何領域都不可能有百分之百正確率的事情,任何...
    lanlana閱讀 277評論 0 0