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