UI控件篇——UIPageControl及其自定义

时间:2023-03-09 14:56:30
UI控件篇——UIPageControl及其自定义

UIPageControl类提供一行点来指示当前显示的是多页面视图的哪一页。当然,由于UIPageControl类可视样式的点击不太好操作,所以最好是确保再添加了可选择的导航选项,以便让页面控件看起来更像一个指示器,而不是一个控件。当用户界面需要按页面进行显示时,使用UIPageControl控件将要显示的用户界面内容分页进行显示会使编程工作变得快捷。

用户点击页面控件,会触发UIControlEventValueChanged事件,并启动设置为控件动作的任何方法。可以通过调用currentPage查询控件的新值,并通过调整numberOfPages属性设置可用的页面数。

// 初始化页面控件
pageControl.numberOfPages = ;
pageControl.currentPage = ; [pageControl addTarget:self action:@selector(pageTurn) forControlEvents:UIControlEventValueChanged];
- (void)pageTurn:(UIPageControl *)pageControl
{
CATransition *transition;
int secondPage = [pageControl currentPage];
if((secondPage - currentPage)>)
transition = [self getAnimation:@"fromRight"];
else
transition = [self getAnimation:@"fromLeft"]; UIImageView *newView = (UIImageView *)[[contentView subviews] objectAtIndex:];
[newView setImage:[UIImage imageNamed:[NSString stringWithFormat:@"ipad_wallpaper%02d.jpg",secondPage+]]];
[contentView exchangeSubviewAtIndex: withSubviewAtIndex:];
[[contentView layer] addAnimation:transition forKey:@"transitionView Animation"]; currentPage = [pageControl currentPage];
}

结合ScrollView后关于UIPageControl的页面设置算法:

// 在ScrollView的委托方法中

int index = fabs(scrollView.contentOffset.x) / scrollView.frame.size.width;
pageControl.currentPage = index;

自定义之一:给UIPageControl控件添加背景

 int pagesCount =;
UIPageControl *pageControl = [[UIPageControl alloc] init];
pageControl.center = CGPointMake(self.view.frame.size.width/, self.view.frame.size.height-); // 设置pageControl的位置
pageControl.numberOfPages = pagesCount;
pageControl.currentPage = ; [pageControl setBounds:CGRectMake(,,*(pagesCount-)+,)]; //页面控件上的圆点间距基本在16左右。
[pageControl.layer setCornerRadius:]; // 圆角层
[pageControl.setBackgroundColor:[UIColor clorWithWhite:0.0 alpha:0.2]];
[self.view addSubview:pageControl];