我们现在的手机屏幕虽然已经够大了,但是还是不能展示太多的信息,所以就出现了滑动视图,能够延伸屏幕,扩大一个页面的信息量,在iOS的中实现滑动视图的控件 是 UIScrollView,其实就相当于一个容器,先设置好它的大小,然后设置好它的容量,接着在上面添加其他的控件,但是这个控件是可以滑动的,所以就能够展示更多的信息量。我们来看一下用法
- (void)viewDidLoad {
[super viewDidLoad];
//图片数组
array =[[NSArray alloc] initWithObjects:[UIImage imageNamed:@"0.jpg"],[UIImage imageNamed:@"1.jpg"],[UIImage imageNamed:@"3.jpg"],[UIImage imageNamed:@"4.jpg"], nil];
// 滑动视图
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)];
// 设置代理,当然在类头上要实现代理
scrollView.delegate = self;
scrollView.backgroundColor = [UIColor redColor];
// 设置容量
scrollView.contentSize = CGSizeMake(320*4,400);
// 设置偏移量
// 往左是正数 往右负数
scrollView.contentOffset = CGPointMake(0, 0);
// 设置是否分页
scrollView.pagingEnabled = YES;
//Horizontal 水平的
// Indicator 指示符
scrollView.showsHorizontalScrollIndicator = NO;
// Vertical 垂直的
scrollView.showsVerticalScrollIndicator = NO;
// bounces 回弹
// 设置是否回弹
scrollView.bounces = NO;
[self.view addSubview:scrollView];
// 往scrollview中添加图片视图
for (int i = 0; i
这就是ScrollView的基本用法,下面再介绍一下一般与滑动视图配套使用的另一个控件 pageControl ,显示出来的其实就是我们看到的 banner 上面的小点,就是标注页数的控件
- (void)viewDidLoad {
[super viewDidLoad];
//UIPageControl 页面控制器
pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(50, 420, 220, 50)];
// 设置点数
pageControl.numberOfPages = 4;
// 获取最小的尺寸来显示你设置的点数
CGSize size = [pageControl sizeForNumberOfPages:4];
// 设置不是当前点的颜色
pageControl.pageIndicatorTintColor = [UIColor yellowColor];
// 设置当前点的颜色
pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
NSLog(@"%@",NSStringFromCGSize(size));
pageControl.backgroundColor = [UIColor purpleColor];
[pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:pageControl];
// 搞个定时器,自动切图
[NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
static int i;
- (void)onTimer{
int x = scrollView.contentOffset.x;
if (x == 0) {
i = 320;
}
if (x == 960) {
i = -320;
}
[scrollView setContentOffset:CGPointMake(i + x, 0) animated:YES];
pageControl.currentPage = (x + i) / 320;
NSLog(@"%d",x);
// [view setContentOffset:CGPointMake(i + 320, 0) animated:YES];
}
- (void)changePage:(UIPageControl *)pageControl{
// 点击page改变scrollview的偏移量
// 获取当前的点数
NSLog(@"当前的点数 %ld",pageControl.currentPage);
int p = pageControl.currentPage;
[scrollView setContentOffset:CGPointMake(p * 320, 0) animated:YES];
}
#pragma mark -
#pragma mark UIScrollViewDelegate
//已经结束减速的方法
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView1{
// NSLog(@"========");
// 获取当前的偏移量
CGPoint point = scrollView1.contentOffset;
// 用偏移量对320取整
int currentpage = point.x/320;
NSLog(@"==== %d",currentpage);
// 设置当前的点数
pageControl.currentPage = currentpage;
}
来看一下效果~