UIScrollView

//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停止?jié)L的的動畫

??????? - (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;

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

推薦閱讀更多精彩內容