Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> UIScrollView&UIPageControl的使用

UIScrollView&UIPageControl的使用

編輯:關於Android編程

UIScrollView是內容滾動視圖,作為父視圖時,可以添加多個視圖控件,然後通過設置其特有的contentSize屬性,以便控制進行水平方向,或垂直方向的滾動。

水平方向滾動時,只需要設置對應的寬度;垂直方向滾動時,只需要設置對應的高度。

//水平方向滾動的scrollview

UIScrollView*scrollview001=[[UIScrollViewalloc]init];

[self.viewaddSubview:scrollview001];

scrollview001.backgroundColor=[UIColorredColor];

scrollview001.frame=CGRectMake(0.0,0.0,CGRectGetWidth(self.view.bounds),200.0);

//添加子視圖控件

NSIntegercount001=10;

CGFloatoriginX=0.0;

for(NSIntegerindex=0;index {

NSString*text=[NSStringstringWithFormat:@"第%@個label",@(index+1)];

UILabel*label=[[UILabelalloc]init];

[scrollview001addSubview:label];

label.frame=CGRectMake(originX,0.0,CGRectGetWidth(scrollview001.bounds),CGRectGetHeight(scrollview001.bounds));

label.text=text;

label.textAlignment=NSTextAlignmentCenter;

label.backgroundColor=[UIColorcolorWithWhite:(random()%255)alpha:((random()%10)/10)];

originX+=CGRectGetWidth(label.bounds);

}

//重要屬性,控制內容大小,設置後可水平方向,或垂直方向進行滾動顯示更多內容控件

//水平方向滾動時,只需要設置對應的寬度;垂直方向滾動時,只需要設置對應的高度;

scrollview001.contentSize=CGSizeMake(CGRectGetWidth(self.view.bounds)*count001,200.0);

//是否整頁顯示效果,默認為NO,即關閉

scrollview001.pagingEnabled=YES;

//是否顯示水平,或垂直滾動條,默認為YES,即顯示

scrollview001.showsHorizontalScrollIndicator=NO;

//是否可通過手勢進行水平,或垂直進行滾動,默認為YEW,即可以

scrollview001.scrollEnabled=YES;

//tag設置,區別不同的scrollview

scrollview001.tag=1000;

//顯示指定頁,如顯示第二頁

[scrollview001setContentOffset:CGPointMake(320.0,0.0)animated:YES];

//代理

/*

1設置代理方法的實現對象

2添加協議

3實現代理方法

*/

scrollview001.delegate=self;

//垂直方向滾動的scrollview

UIScrollView*scrollview002=[[UIScrollViewalloc]initWithFrame:CGRectMake(0.0,210.0,CGRectGetWidth(self.view.bounds),200.0)];

[self.viewaddSubview:scrollview002];

//添加子視圖控件

NSIntegercount002=10;

CGFloatoriginY=0.0;

for(NSIntegerindex=0;index {

NSString*text=[NSStringstringWithFormat:@"第%@個label",@(index+1)];

UILabel*label=[[UILabelalloc]init];

[scrollview002addSubview:label];

label.frame=CGRectMake(0.0,originY,CGRectGetWidth(scrollview002.bounds),CGRectGetHeight(scrollview002.bounds));

label.text=text;

label.textAlignment=NSTextAlignmentCenter;

label.backgroundColor=[UIColorcolorWithWhite:0.5alpha:0.3];

originY+=CGRectGetHeight(label.bounds);

}

//重要屬性,控制內容大小,設置後可水平方向,或垂直方向進行滾動顯示更多內容控件

//水平方向滾動時,只需要設置對應的寬度;垂直方向滾動時,只需要設置對應的高度;

scrollview002.contentSize=CGSizeMake(CGRectGetWidth(self.view.bounds),(CGRectGetHeight(scrollview002.bounds)*count002));

//是否整頁顯示效果,默認為NO,即關閉

scrollview002.pagingEnabled=YES;

//tag設置,區別不同的scrollview

scrollview002.tag=2000;

//代理

scrollview002.delegate=self;

UIPageControl是頁碼控件,通常結合scro使用,用來頁碼,即當前頁面,或總頁面數。

UIPageControl*pagecontroll=[[UIPageControlalloc]init];

[self.viewaddSubview:pagecontroll];

pagecontroll.backgroundColor=[UIColorclearColor];

pagecontroll.frame=CGRectMake(((CGRectGetWidth(self.view.bounds)-200.0)/2),(200.0-20.0-10.0),200.0,20.0);

//設置總頁碼數量

pagecontroll.numberOfPages=count001;

//設置當前頁碼,即指定頁面,默認從0開始,即0~n

pagecontroll.currentPage=1;

//設置當前頁碼控件的顏色

pagecontroll.currentPageIndicatorTintColor=[UIColorgreenColor];

//設置非當前頁碼控件的顏色

pagecontroll.pageIndicatorTintColor=[UIColorwhiteColor];

//設置tag值

pagecontroll.tag=3000;

@interfaceViewController()

@end

//UIScrollViewDelegate

-(void)scrollViewDidScroll:(UIScrollView*)scrollView

{

NSIntegertag=scrollView.tag;

if(1000==tag)

{

//內容滾動變化間距,水平方向

CGFloatoffsetX=scrollView.contentOffset.x;

//通過水平滾動變化間距與頁面寬度計算出當前滾動後的頁面

NSIntegerpage=offsetX/CGRectGetWidth(self.view.bounds);

NSLog(@"offsetX=%@,第%@頁",@(offsetX),@(page+1));

//控件頁碼的當前頁碼

UIPageControl*pagecontroll=(UIPageControl*)[self.viewviewWithTag:3000];

pagecontroll.currentPage=page;

//無限循環效果,即滑到指定范圍後回到第一頁

//內容滾動變化間距

CGFloatoffsetChange=(CGRectGetWidth(self.view.bounds)*(10-1)+40.0);

NSLog(@"offsetChange=%@",@(offsetChange));

if(offsetX>=offsetChange)

{

//從最後一頁跳到第一頁

[scrollViewsetContentOffset:CGPointMake(0.0,0.0)animated:NO];

//控件頁碼的當前頁碼

pagecontroll.currentPage=0;

}

elseif(offsetX<=-40.0)

{

//從第一頁跳到最後一頁

[scrollViewsetContentOffset:CGPointMake((CGRectGetWidth(self.view.bounds)*(10-1)),0.0)animated:NO];

//控件頁碼的當前頁碼

pagecontroll.currentPage=9;

}

}

elseif(2000==tag)

{

//內容滾動變化間距,垂直方向

CGFloatoffsetY=scrollView.contentOffset.y;

//通過水平滾動變化間距與頁面寬度計算出當前滾動後的頁面

NSIntegerpage=offsetY/CGRectGetHeight(scrollView.bounds);

NSLog(@"offsetY=%@,第%@頁",@(offsetY),@(page+1));

}

NSLog(@"滾動");

}

//calledonstartofdragging(mayrequiresometimeandordistancetomove)

-(void)scrollViewWillBeginDragging:(UIScrollView*)scrollView

{

NSLog(@"即將開始拖動");

}

//calledonfingerupiftheuserdragged.velocityisinpoints/millisecond.targetContentOffsetmaybechangedtoadjustwherethescrollviewcomestorest

-(void)scrollViewWillEndDragging:(UIScrollView*)scrollViewwithVelocity:(CGPoint)velocitytargetContentOffset:(inoutCGPoint*)targetContentOffset

{

NSLog(@"即將結束拖動");

}

//calledonfingerupiftheuserdragged.decelerateistrueifitwillcontinuemovingafterwards

-(void)scrollViewDidEndDragging:(UIScrollView*)scrollViewwillDecelerate:(BOOL)decelerate

{

NSLog(@"結束拖動");

}

//calledonfingerupaswearemoving

-(void)scrollViewWillBeginDecelerating:(UIScrollView*)scrollView

{

NSLog(@"拖動即將釋放");

}

//calledwhenscrollviewgrindstoahalt

-(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView

{

NSLog(@"拖動已經釋放");

NSIntegertag=scrollView.tag;

if(1000==tag)

{

//內容滾動變化間距,水平方向

CGFloatoffsetX=scrollView.contentOffset.x;

//通過水平滾動變化間距與頁面寬度計算出當前滾動後的頁面

NSIntegerpage=offsetX/CGRectGetWidth(self.view.bounds);

NSLog(@"offsetX=%@,第%@頁",@(offsetX),@(page+1));

//控件頁碼的當前頁碼

UIPageControl*pagecontroll=(UIPageControl*)[self.viewviewWithTag:3000];

pagecontroll.currentPage=page;

//無限循環效果,即滑到指定范圍後回到第一頁

//內容滾動變化間距

CGFloatoffsetChange=(CGRectGetWidth(self.view.bounds)*(10-1)+40.0);

NSLog(@"offsetChange=%@",@(offsetChange));

if(offsetX>=offsetChange)

{

//從最後一頁跳到第一頁

[scrollViewsetContentOffset:CGPointMake(0.0,0.0)animated:NO];

//控件頁碼的當前頁碼

pagecontroll.currentPage=0;

}

elseif(offsetX<=-40.0)

{

//從第一頁跳到最後一頁

[scrollViewsetContentOffset:CGPointMake((CGRectGetWidth(self.view.bounds)*(10-1)),0.0)animated:NO];

//控件頁碼的當前頁碼

pagecontroll.currentPage=9;

}

}

elseif(2000==tag)

{

//內容滾動變化間距,垂直方向

CGFloatoffsetY=scrollView.contentOffset.y;

//通過水平滾動變化間距與頁面寬度計算出當前滾動後的頁面

NSIntegerpage=offsetY/CGRectGetHeight(scrollView.bounds);

NSLog(@"offsetY=%@,第%@頁",@(offsetY),@(page+1));

}

}

//calledwhensetContentOffset/scrollRectVisible:animated:finishes.notcalledifnotanimating

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView*)scrollView

{

}

//anyoffsetchanges

-(void)scrollViewDidZoom:(UIScrollView*)scrollView

{

}

//returnaviewthatwillbescaled.ifdelegatereturnsnil,nothinghappens

-(nullableUIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView

{

returnnil;

}

//calledbeforethescrollviewbeginszoomingitscontent

-(void)scrollViewWillBeginZooming:(UIScrollView*)scrollViewwithView:(nullableUIView*)view

{

}

//scalebetweenminimumandmaximum.calledafterany'bounce'animations

-(void)scrollViewDidEndZooming:(UIScrollView*)scrollViewwithView:(nullableUIView*)viewatScale:(CGFloat)scale

{

}

//returnayesifyouwanttoscrolltothetop.ifnotdefined,assumesYES

-(BOOL)scrollViewShouldScrollToTop:(UIScrollView*)scrollView

{

returnYES;

}

//calledwhenscrollinganimationfinished.maybecalledimmediatelyifalreadyattop

-(void)scrollViewDidScrollToTop:(UIScrollView*)scrollView

{

}

 

\

 

 

\
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved