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的切換頁面功能,以后會為大家添加 “無限循環切換頁面”和“動態的增加和減少頁面”。