一、滑動(dòng)試圖(UIScrollView)
1、基本概念
1) 移動(dòng)設(shè)備的屏幕大小是極其有限的,因此直接展示在用戶眼前的內(nèi)容也相當(dāng)有限,當(dāng)展示的內(nèi)容較多,超出一個(gè)屏幕時(shí),用戶可通過滾動(dòng)手勢(shì)來(lái)查看屏幕以外的內(nèi)容
2) 通過scrollView可以通過手勢(shì),放大或者縮小顯示的內(nèi)容
2、UIScrollView常用屬性
1)里面內(nèi)容的大小,也就是可以滾動(dòng)的大小,模式是0,沒有滾動(dòng)效果
contentSize
2)這個(gè)屬性能夠在UIScrollView的4周增加額外的滾動(dòng)區(qū)域
contentInset
3) 這個(gè)屬性用來(lái)表示UIScrollView滾動(dòng)的位置
contentOffset
4) 默認(rèn)是 yes,就是滾動(dòng)超過邊界會(huì)反彈有反彈回來(lái)的效果。假如是 NO,那么滾動(dòng)到達(dá)邊界會(huì)立刻停止
bounces
5) 是否分頁(yè)
pagingEnabled
6) 是否可以滾動(dòng)
scrollEnabled
7) 滾動(dòng)時(shí)是否顯示水平滾動(dòng)條
showsHorizontalScrollIndicator
8) 滾動(dòng)時(shí)是否顯示垂直滾動(dòng)條
showsVerticalScrollIndicator
9) 滾動(dòng)條的樣式,基本只是設(shè)置顏色??偣?個(gè)顏色:默認(rèn)、黑、白
indicatorStyle
10) 默認(rèn)是 NO,可以在垂直和水平方向同時(shí)運(yùn)動(dòng)。當(dāng)值是 YES 時(shí),假如一開始是垂直或者是水平運(yùn)動(dòng),那么接下來(lái)會(huì)鎖定另外一個(gè)方向的滾動(dòng)。 假如一開始是對(duì)角方向滾動(dòng),則不會(huì)禁止某個(gè)方向
directionalLockEnabled
10) 讓指定的區(qū)域顯示顯示出來(lái)
scrollRectToVisible:animate
10)當(dāng)touch后還沒有拖動(dòng)的時(shí)候值是YES,否則是NO
tracking
11) 當(dāng)內(nèi)容放大到最大或者最小的時(shí)候是YES,否則NO
zoomBouncing
12) 當(dāng)正在縮放的時(shí)候值是YES,否則為NO
zooming
13) 當(dāng)滾動(dòng)后,手指放開但是還在繼續(xù)滾動(dòng)中。這個(gè)時(shí)候是 YES,其它時(shí)候是 NO
decelerating
14) 設(shè)置手指放開后的減速率
decelerationRate
15) 一個(gè)浮點(diǎn)數(shù),表示能放最大的倍數(shù)
maximumZoomScale
16) 一個(gè)浮點(diǎn)數(shù),表示能縮最小的倍數(shù)
minimumZoomScale
17) 和 bounces 類似,區(qū)別在于:這個(gè)效果反映在縮放上面,假如縮放超過最大縮放,那么會(huì)反彈效果;假如是 NO,則到達(dá)最大或者最小的時(shí)候立即停止
bouncesZoom
3、UIScrollView代理方法
創(chuàng)建一個(gè)UIScrollView,并在里面放置一張圖片
1)scrollView已經(jīng)滑動(dòng)
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
2)視圖已經(jīng)放大或縮小
- (void)scrollViewDidZoom:(UIScrollView *)scrollView;
3)scrollView開始拖動(dòng)
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
4)scrollView結(jié)束拖動(dòng)
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
5)scrollView開始減速(以下兩個(gè)方法注意與以上兩個(gè)方法加以區(qū)別)
- (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)返回一個(gè)放大或者縮小的視圖
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
8)開始放大或者縮小
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
9)縮放結(jié)束時(shí)
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale;
10)是否支持滑動(dòng)至頂部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
11)滑動(dòng)到頂部時(shí)調(diào)用該方法
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;
一、利用scrollView實(shí)現(xiàn)圖片的放大縮小
1、設(shè)置最大最小縮放倍率
self.maximumZoomScale = 2.5;
self.minimumZoomScale = 1;
2、指定縮放誰(shuí)
- (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];
}
}
二、實(shí)現(xiàn)類似相冊(cè)的功能
1、創(chuàng)建一個(gè)scrollView,進(jìn)行配置
2、在scrollView里面放多張能夠顯示得圖片
3、每次翻到下一張圖片時(shí)要讓這上個(gè)圖片恢復(fù)到原比例
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;
}