我的開發筆記---UIPageControl的詳細使用


UIPageControl控件在程序中出現的比較頻繁,尤其在和UIScrollView配合來顯示大量數據時,會使用它來控制UIScrollView的翻頁。在滾動ScrollView時可通過PageControll中的小白點來觀察當前頁面的位置,也可通過點擊PageContrll中的小白點來滾動到指定的頁面。下面以一個簡單但實用的例子來講解PageControll的用法。

 

如上圖中的曲線圖和表格便是由ScrollView加載兩個控件(UIWebView 和 UITableView)實用其翻頁屬性實現的頁面滾動。而PageControll但當配合角色,頁面滾動小白點會跟着變化位置,而點擊小白點ScrollView會滾動到指定的頁面。

代碼:(只羅列主要代碼)

 

- (void)viewDidLoad

{

    [superviewDidLoad];

    self.view.backgroundColor = [UIColorcolorWithPatternImage:[UIImageimageNamed:@"bg_blank.png"]];

  //  self.view.backgroundColor = [UIColor clearColor];

 

//定義UIScrollView

    scrollview = [[UIScrollViewalloc] init];

    scrollview.frame = CGRectMake(10, 0, 300, 108);    

    scrollview.contentSize = CGSizeMake(600, 108);  //scrollview的滾動范圍

    scrollview.showsVerticalScrollIndicator = NO;

    scrollview.showsHorizontalScrollIndicator = NO;

//myScrollView.clipsToBounds = YES;

    scrollview.delegate = self;

     scrollview.scrollEnabled = YES;

    scrollview.pagingEnabled = YES; //使用翻頁屬性 

    scrollview.bounces = NO

      

//定義WebView加載曲線圖

    webview = [[UIWebViewalloc] init];

    webview.frame = CGRectMake(-7, -10, 307, 118);

    webview.delegate = self;

    [webviewsetBackgroundColor:[UIColorclearColor]];

    [webviewsetOpaque:NO];    

    NSString *fullPath = [NSBundlepathForResource:@"sline"ofType:@"htm"inDirectory:[[NSBundlemainBundle] bundlePath]];  

    [self.webviewloadRequest:[NSURLRequestrequestWithURL:[NSURLfileURLWithPath:fullPath]]];   

    

    //用來制定邊框

    view22 = [[UIViewalloc] init];

    //將圖層的邊框設置為圓腳   

    view22.layer.cornerRadius = 10;

    view22.layer.masksToBounds = YES;

    //給圖層添加一個有色邊框

    view22.layer.borderWidth = 1;

    //view1.layer.borderColor = [[UIColor colorWithRed:0.52 green:0.09 blue:0.07 alpha:1] CGColor]; 

    view22.layer.borderColor = [[UIColorcolorWithRed:0green:0blue:0alpha:1] CGColor];   

    view22.frame = CGRectMake(0, 0, 300, 108);

    view22.backgroundColor = [UIColorcolorWithRed:0.31green:0.31blue:0.31alpha:1];  

 

    tableview.frame = CGRectMake(0, 21, 300, 87);

    tableview.allowsSelection = NO;

    tableview.backgroundColor = [UIColorcolorWithRed:0.31green:0.31blue:0.31alpha:1];

 

//用來制定邊框

    view11 = [[UIViewalloc] init];

    //將圖層的邊框設置為圓腳   

    view11.layer.cornerRadius = 10;

    view11.layer.masksToBounds = YES;

    //給圖層添加一個有色邊框

    view11.layer.borderWidth = 1;

    //view1.layer.borderColor = [[UIColor colorWithRed:0.52 green:0.09 blue:0.07 alpha:1] CGColor]; 

    view11.layer.borderColor = [[UIColorcolorWithRed:0green:0blue:0alpha:1] CGColor];   

    view11.frame = CGRectMake(300, 0, 300, 108);

    view11.backgroundColor = [UIColorblackColor];

 

    [view11addSubview:tableview];

    [scrollviewaddSubview:view11];

   

    [view22addSubview:webview];

    [scrollviewaddSubview:view22];

 

//定義PageControll

    pageControl = [[UIPageControlalloc] init];

    pageControl.frame = CGRectMake(150, 100, 20, 20);//指定位置大小

    pageControl.numberOfPages = 2;//指定頁面個數

    pageControl.currentPage = 0;//指定pagecontroll的值,默認選中的小白點(第一個)

    [pageControladdTarget:selfaction:@selector(changePage:)forControlEvents:UIControlEventValueChanged];

    //添加委托方法,當點擊小白點就執行此方法

    [self.viewaddSubview:scrollview];

    [self.viewaddSubview:pageControl];    

}

 

//scrollview的委托方法,當滾動時執行

- (void)scrollViewDidScroll:(UIScrollView *)sender {

    int page = scrollview.contentOffset.x / 290;//通過滾動的偏移量來判斷目前頁面所對應的小白點

     pageControl.currentPage = page;//pagecontroll響應值的變化

}

 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

  

}

 

//pagecontroll的委托方法

- (IBAction)changePage:(id)sender { 

    int page = pageControl.currentPage;//獲取當前pagecontroll的值

    [scrollview setContentOffset:CGPointMake(300 * page, 0)];//根據pagecontroll的值來改變scrollview的滾動位置,以此切換到指定的頁面

}

 

以上是一種簡單的方法來實現pagecontroll的切換頁面功能,以后會為大家添加 “無限循環切換頁面”和“動態的增加和減少頁面”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM