//UIScrollView 滾動(dòng)視圖
? ?//滾動(dòng)原因:控件大小限制了可顯示的范圍,如果想要顯示更多的內(nèi)容,需要滾動(dòng)
? ?//滾動(dòng)的條件:內(nèi)容大小 > frame.size
//內(nèi)容大小
? ? self.sv.contentSize = CGSizeMake(VIEW_WIDTH*6, VIEW_HEIGHT);
//偏移量
? ?//只要視圖滾動(dòng) 偏移量就會變化
? ?//只要改變偏移量 視圖就會滾動(dòng)
? ?sv.contentOffset = CGPointMake(100, 100);
//內(nèi)邊距
? ?sv.contentInset = UIEdgeInsetsMake(100, 200, 300, 400);
? ?/* ?整頁翻動(dòng) ?*/
? ?//以當(dāng)前滾動(dòng)視圖的寬度為1頁
? ?self.sv.pagingEnabled = YES;
? ?/* ?邊緣彈動(dòng)效果 ?*/
? ?self.sv.bounces = YES;
? ?/* ?滾到頂部 */
? ?//每個(gè)滾動(dòng)視圖默認(rèn)都為YES 一個(gè)頁面中存在多個(gè)滾動(dòng)視圖時(shí) 僅開啟需要滾動(dòng)的視圖 其他滾動(dòng)視圖置為NO
? ?self.sv.scrollsToTop = NO;
? ?/* 是否允許滾動(dòng) */
? ?self.sv.scrollEnabled = YES;
? ?/* 滾動(dòng)條顯示/隱藏 ?*/
? ?//水平Horizontal
? ?self.sv.showsHorizontalScrollIndicator = NO;
? ?//垂直Vertical
? ?self.sv.showsVerticalScrollIndicator = NO;
//UIPageControl
? ?//視圖的滾動(dòng)分為兩個(gè)階段:
? ?//1.拖拽(手指在屏幕上)
? ?//2.減速(手指離開屏幕)
? ?self.sv.delegate = self;
? ?//滾動(dòng)視圖功能為:滾動(dòng)/縮放
? ?//最小比例
? ?self.sv.minimumZoomScale = 0.5;
? ?//最大比例
? ?self.sv.maximumZoomScale = 2;
#parma --- scrollView的代理方法
? ? ? ?// scrollView正在滾動(dòng)的時(shí)候調(diào)用?偏移量一直變化
??????? - (void)scrollViewDidScroll:(UIScrollView *)scrollView;
? ? ? ?// scrollView正在縮放
??????? - (void)scrollViewDidZoom:(UIScrollView *)scrollView
? ? ? ? //開始拖拽的時(shí)候調(diào)用
??????? - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
? ? ? ? //即將停止拖拽的時(shí)候調(diào)用
??????? - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inoutCGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);
? ? ? ?// 已經(jīng)停止拖拽調(diào)用
??????? - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
? ? ? ? //scrollView即將開始減速
??????? - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
? ? ? ?// scrollView停止減速?停止
??????? - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
? ? ? ? //scrollView停止?jié)L的的動(dòng)畫
??????? - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
? ? ? ? //在scrollView中?哪些控件是需要縮放的
??????? - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
? ? ? ? //scrollView即將開始縮放
??????? - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view NS_AVAILABLE_IOS(3_2);
? ? ? ? //scrollView結(jié)束縮放
??????? - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale;
? ? ? ? //scrollView即將滾動(dòng)到頂部
??????? - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
? ? ? ? //scrollView已經(jīng)滾動(dòng)到頂部
??????? - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;
通過UIScrollView實(shí)現(xiàn)縮放效果
//準(zhǔn)備開始縮放的時(shí)候調(diào)用?
- (void)scrollViewWillBeginZooming:(UIScrollView*)scrollView withView:(UIView*)view
//正在縮放的時(shí)候調(diào)用
- (void)scrollViewDidZoom:(UIScrollView*)scrollView
核心代碼:設(shè)置內(nèi)容大小
????contentSize.height == 0設(shè)置為0僅僅代表豎直方向上不能滾動(dòng)
???self.scrollView.contentSize=CGSizeMake(count * w, 0);
? ?分頁
????每一頁的尺寸都是跟scrollView的frame.size一樣的
???self.scrollView.pagingEnabled=YES;?
- (void)scrollViewDidScroll:(UIScrollView*)scrollView{
????--四舍五入為整數(shù)的方法--? (int)(小數(shù)+ 0.5)
????0.3? -> (int)(0.3 + 0.5) == 0
????0.4 -> (int)(0.4 + 0.5) == 0
????1.5 -> (int)(1.5 + 0.5) == 2
????0.7 -> (int)(0.7 + 0.5) == 1
????小數(shù)加上0.5再轉(zhuǎn)換成整數(shù),這樣頁碼顯示的就是正確的頁數(shù)(仔細(xì)想)
???intpage = (int)(scrollView.contentOffset.x/ scrollView.frame.size.width+ 0.5);
???self.pageControl.currentPage= page;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView{
???intpage = scrollView.contentOffset.x/ scrollView.frame.size.width;
???self.pageControl.currentPage= page;
}
分頁
只要將UIScollView的pageEnabled屬性設(shè)置為YES,UIScrollView會被分割成多個(gè)獨(dú)立頁面,里面的內(nèi)容就能進(jìn)行分頁展示,一般會配合UIPageControl增強(qiáng)分頁效果
//一共有多少頁
@property(nonatomic)NSIntegernumberOfPages;
當(dāng)前顯示第幾頁
@property(nonatomic)NSIntegercurrentPage;?
//只有一頁時(shí),是否需要隱藏頁碼指示器
@property(nonatomic)BOOLhidesForSinglePage;?
//其他頁碼指示器的顏色
@property(nonatomic,retain)UIColor*pageIndicatorTintColor;
//當(dāng)前頁碼指示器的顏色
@property(nonatomic,retain)UIColor*currentPageIndicatorTintColor;