//创建滚动视图对象
UIScrollView * scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(60, 100, 200, 300)];
scrollView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:scrollView];
[scrollView release];
UIScrollView的frame,设定了展示滚动视图窗口的位置和大小(固定的相框)
//contentSize,设定了内容视图(contentView)的大小
//contentSize默认和frame.size一致,即不能滚动
//如果想实现视图滚动效果,必须设置contentSize
//contentSize的width 大于frame.size.width
//contentSize的height 大于frame.size.height
scrollView.contentSize = CGSizeMake(320, 480);
//创建UIImageView对象
UIImageView * showImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
showImageView.image = [UIImage imageNamed:@"iphone"];
//添加到滚动视图上
[scrollView addSubview:showImageView];
[showImageView release];
//自动读取图片的宽高
scrollView.contentSize = showImageView.image.size;
//scrollView的原点和scrollView原点的偏移量
//crollView向scrollView原点左侧为正方向,x为正值
//crollView向scrollView原点左侧为上方向,y为正值 默认为0
//scrollView.contentOffset = CGPointMake(50, 50);
scrollView.contentInset = UIEdgeInsetsMake(50, 50, 0, 0);
- (void)viewDidLoad
{ scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(60, 100, 200, 283)];
[self.view addSubview:scrollView];
[scrollView release];
scrollView.contentSize = CGSizeMake(200*3, 283);
scrollView.delegate = self;
//scrollView.pagingEnabled = YES;
scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(100, 400, 120, 40)];
[self.view addSubview:_pageControl];
_pageControl.backgroundColor = [UIColor blueColor];
_pageControl.numberOfPages = 3;
//除当前点之外的其他点的颜色
_pageControl.pageIndicatorTintColor = [UIColor blackColor];
//当前点的颜色
_pageControl.currentPageIndicatorTintColor = [UIColor yellowColor];
//默认当前页码
// _pageControl.currentPage = 2;
[_pageControl addTarget:self action:@selector(didClickPageAction:) forControlEvents:UIControlEventValueChanged];
[_pageControl release];
//是否可以滚动
//scrollView.scrollEnabled = NO;
//方向锁 开始在确定一个方向滑动后,不可以向别的方向滑动
//scrollView.directionalLockEnabled = YES;
//scrollView.scrollsToTop = NO;
//回弹
//scrollView.bounces = YES;
//水平回弹
//scrollView.alwaysBounceHorizontal = NO;
//垂直回弹
// scrollView.alwaysBounceVertical = NO;
//分页效果
scrollView.pagingEnabled = YES;
//指示条颜色
//scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
//只显示右边的指示条
//scrollView.showsHorizontalScrollIndicator = YES;
//指示条消失不见
//scrollView.showsVerticalScrollIndicator = NO;
for (int i = 0; i < 3; i++) {
scroll = [[UIScrollView alloc]initWithFrame:CGRectMake(200*i, 0, 200, 283)];
[scrollView addSubview:scroll];
[scroll release];
// scroll.tag = 100+i;
scroll.contentSize = CGSizeMake(200, 283);
scroll.maximumZoomScale = 2.0;
scroll.minimumZoomScale = 0.5;
UIImage * image = [UIImage imageNamed:[NSString stringWithFormat:@"h%d.jpeg",i+1]];
UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 200, 283)];
imageView.image = image;
imageView.tag = 100 +i;
[scroll addSubview:imageView];
scroll.delegate = self;
[imageView release];
}
// scrollView.contentOffset = CGPointMake(0, 283);
}
-(void)didClickPageAction:(UIPageControl *)sender
{
//当前点击的Page
NSInteger currentPage = sender.currentPage;
//设置scrollView的
CGPoint offset = scrollView.contentOffset;
offset.x = currentPage * 200;
//scrollView.contentOffset = offset;
[scrollView setContentOffset:offset animated:YES];
}
//指定需要缩放的视图对象
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scroll1
{
//找出子视图
// NSLog(@"subviwe = %@",scrollView.subviews);
//根据当前停留的页数,指定对应的视图对象
CGFloat offsetx = scrollView.contentOffset.x;
//页宽
CGFloat pageWidth = 200;
//计算当前显示第几页
NSInteger pageName = offsetx/pageWidth;
UIScrollView * a = [scrollView.subviews objectAtIndex:pageName];
UIImageView * image = (UIImageView *)[a viewWithTag:100+pageName];
return image;
return nil;
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"只要view有滚动(不管是拖、拉、放大、缩小等导致)都会执行此函数%s,%d",__FUNCTION__,__LINE__);
}
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
NSLog(@"view将要开始减速,view滑动之后有惯性%s,%d",__FUNCTION__,__LINE__);
}
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
NSLog(@"将要结束拖拽,手指已拖动过view并准备离开手指的那一刻,注意:当属性pagingEnabled为YES时,此函数不被调用%s,%d",__FUNCTION__,__LINE__);
}
-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
NSLog(@"有动画时调用%s,%d",__FUNCTION__,__LINE__);
}
-(void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
NSLog(@"%s,%d",__FUNCTION__,__LINE__);
}
-(BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
NSLog(@"%s,%d",__FUNCTION__,__LINE__);
return YES;
}
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"将要开始拖拽,手指已经放在view上并准备拖动的那一刻%s,%d",__FUNCTION__,__LINE__);
}
//scrollView停止滚动时,计算当前显示页数
//在"减速停止"这个代理方法中,计算当前显示第几页
//先获取contentoffset.x 在除以页宽,得到显示页数,最后,计算得到的正在显示的页数,设置给pageControll的currentPage
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scroll
{
NSLog(@"view已经停止滚动%s,%d",__FUNCTION__,__LINE__);
//取方法停止时x宽的大小
CGFloat offsetx = scrollView.contentOffset.x;
//页宽
CGFloat pageWidth = 200;
//计算当前显示第几页
NSInteger pageName = offsetx/pageWidth;
//计算结果设置给Page
_pageControl.currentPage = pageName;
}