UIScrollView滚动视图

UIScrollView滚动视图

self.sv= [[UIScrollViewalloc]initWithFrame:self.view.frame];

self.sv.backgroundColor= [UIColorredColor];

[self.viewaddSubview:self.sv];

[self.svrelease];

滚动原因:因为控件大小限制了可显示范围如果想要显示更多内容需要滚动

滚动条件:内容大小>frame.size

内容大小

self.sv.contentSize=CGSizeMake(VIEW_WIDTH*6,VIEW_HEIGHT);

添加图片

for(NSIntegeri =0; i <=6; i++) {

UIImageView*imgView = [[UIImageViewalloc]initWithFrame:CGRectMake((i -1)*VIEW_WIDTH,0,VIEW_WIDTH,VIEW_HEIGHT)];

NSString*name = [NSStringstringWithFormat:@"S%ld.jpg",i];

imgView.image= [UIImageimageNamed:name];

[self.svaddSubview:imgView];

[imgViewrelease];

}

<内容偏移量>

只要视图滚动偏移量就会变化

只要改变偏移量视图就会滚动

self.sv.contentOffset=CGPointMake(0,0);

内边距

sv.contentInset = UIEdgeInsetsMake(100, 200, 300, 400);

整页翻动

以当前滚动视图的宽度为1页

self.sv.pagingEnabled=YES;

边缘弹动效果

self.sv.bounces=YES;

滚到顶部

每个滚动视图默认都为:YES一个页面中存在多个滚动视图时仅开启需要滚动的视图其他滚动视图置为:NO

self.sv.scrollsToTop=YES;

是否允许滚动(默认YES)

self.sv.scrollEnabled=YES;

滚动条显示和隐藏

水平horizontal

self.sv.showsHorizontalScrollIndicator=NO;

垂直vertical

self.sv.showsVerticalScrollIndicator=NO;

UIPageControl

UIPageControl*page = [[UIPageControlalloc]initWithFrame:CGRectMake(0,0,150,30)];

page.backgroundColor= [UIColorblackColor];

添加父视图

加在self.view上保证视图滑动时依然存在

[self.viewaddSubview:page];

[pagerelease];

page.numberOfPages=6;

page.center=CGPointMake(self.view.center.x,VIEW_HEIGHT-50);

[pageaddTarget:selfaction:@selector(page:)forControlEvents:UIControlEventValueChanged];

page.tag=1000;

视图的滚动分为两个阶段

1.拖拽(手指在屏幕上)

2.减速(手指离开屏幕)

self.sv.delegate=self;

滚动视图功能为:滚动/缩放

最小比例

self.sv.minimumZoomScale=0.5;

最大比例

self.sv.maximumZoomScale=2;

}

#pragma mark  -缩放协议方法

滚动视图已经滚动(只要偏移量变化/只要视图滚动就会触发该方法)

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

NSLog(@"设置scrollView中跟随缩放的视图");

return scrollView.subviews.firstObject;

}

#pragma mark -滚动协议方法

滚动视图已经滚动

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

NSLog(@"滚啊滚");

}

视图将要开始拖拽

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

滚动开始

NSLog(@"视图将要开始拖拽");

}

视图已经结束拖拽

-(void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate{

NSLog(@"视图将要结束拖拽");

}

//视图将要开始减速

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

NSLog(@"视图将要开始减速");

}

视图已经结束减速

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

结束滚动

scrollView.zoomScale=1;

获取页码控制器

UIPageControl*pc = [self.viewviewWithTag:1000];

修改小圆点

pc.currentPage=self.sv.contentOffset.x/VIEW_WIDTH;

NSLog(@"视图已经结束减速");

}

#pragma mark - page方法

-(void)page:(UIPageControl*)page{

当页码变化时改变滚动视图的偏移量

375*page.currentPage当前页码对应的滚动视图偏移量

self.sv.contentOffset = CGPointMake(375*page.currentPage, 0);

[self.sv setContentOffset:CGPointMake(375*page.currentPage, 0) animated:YES];

通过动画滚动

[UIViewanimateWithDuration:1animations:^{

self.sv.contentOffset=CGPointMake(VIEW_WIDTH*page.currentPage,0);

}];

}

推荐阅读更多精彩内容