一、滑動試圖(UIScrollView)
1、基本概念
1) 移動設備的屏幕大小是極其有限的,因此直接展示在用戶眼前的內容也相當有限,當展示的內容較多,超出一個屏幕時,用戶可通過滾動手勢來查看屏幕以外的內容
2) 通過scrollView可以通過手勢,放大或者縮小顯示的內容
2、UIScrollView常用屬性
1)里面內容的大小,也就是可以滾動的大小,模式是0,沒有滾動效果
contentSize
2)這個屬性能夠在UIScrollView的4周增加額外的滾動區域
contentInset
3) 這個屬性用來表示UIScrollView滾動的位置
contentOffset
4) 默認是 yes,就是滾動超過邊界會反彈有反彈回來的效果。假如是 NO,那么滾動到達邊界會立刻停止
bounces
5) 是否分頁
pagingEnabled
6) 是否可以滾動
scrollEnabled
7) 滾動時是否顯示水平滾動條
showsHorizontalScrollIndicator
8) 滾動時是否顯示垂直滾動條
showsVerticalScrollIndicator
9) 滾動條的樣式,基本只是設置顏色。總共3個顏色:默認、黑、白
indicatorStyle
10) 默認是 NO,可以在垂直和水平方向同時運動。當值是 YES 時,假如一開始是垂直或者是水平運動,那么接下來會鎖定另外一個方向的滾動。 假如一開始是對角方向滾動,則不會禁止某個方向
directionalLockEnabled
10) 讓指定的區域顯示顯示出來
scrollRectToVisible:animate
10)當touch后還沒有拖動的時候值是YES,否則是NO
tracking
11) 當內容放大到最大或者最小的時候是YES,否則NO
zoomBouncing
12) 當正在縮放的時候值是YES,否則為NO
zooming
13) 當滾動后,手指放開但是還在繼續滾動中。這個時候是 YES,其它時候是 NO
decelerating
14) 設置手指放開后的減速率
decelerationRate
15) 一個浮點數,表示能放最大的倍數
maximumZoomScale
16) 一個浮點數,表示能縮最小的倍數
minimumZoomScale
17) 和 bounces 類似,區別在于:這個效果反映在縮放上面,假如縮放超過最大縮放,那么會反彈效果;假如是 NO,則到達最大或者最小的時候立即停止
bouncesZoom
3、UIScrollView代理方法
創建一個UIScrollView,并在里面放置一張圖片
1)scrollView已經滑動
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
2)視圖已經放大或縮小
- (void)scrollViewDidZoom:(UIScrollView *)scrollView;
3)scrollView開始拖動
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
4)scrollView結束拖動
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
5)scrollView開始減速(以下兩個方法注意與以上兩個方法加以區別)
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
6)scrollview減速停止
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
用法:
if (![scrollView isMemberOfClass:[UITableView class]]) {
int current = scrollView.contentOffset.x / 320;
UIPageControl *pageControl = (UIPageControl *)[self.view viewWithTag:101];
pageControl.currentPage = current;
}
7)返回一個放大或者縮小的視圖
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
8)開始放大或者縮小
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
9)縮放結束時
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale;
10)是否支持滑動至頂部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
11)滑動到頂部時調用該方法
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;
一、利用scrollView實現圖片的放大縮小
1、設置最大最小縮放倍率
self.maximumZoomScale = 2.5;
self.minimumZoomScale = 1;
2、指定縮放誰
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
3、雙擊事件的放大與縮小
- (void)zoomInOrOut:(UITapGestureRecognizer *)tapGesture
{
if (self.zoomScale >= 2.5) {
[self setZoomScale:1 animated:YES];
}else {
CGPoint point = [tapGesture locationInView:self];
[self zoomToRect:CGRectMake(point.x - 40, point.y - 40, 80, 80) animated:YES];
}
}
二、實現類似相冊的功能
1、創建一個scrollView,進行配置
2、在scrollView里面放多張能夠顯示得圖片
3、每次翻到下一張圖片時要讓這上個圖片恢復到原比例
int pre = 0;
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
int current = scrollView.contentOffset.x / 340;
ImageScrollView *imgScrollView = (ImageScrollView *)[scrollView viewWithTag:pre];
if (imgScrollView.zoomScale > 1) {
imgScrollView.zoomScale = 1;
}
pre = current;
}