UIScrollView 滚动视图

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

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

内容大小

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

添加图片

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

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

偏移量

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

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

//    sv.contentOffset = CGPointMake(375, 0);

内边距

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

整页翻动

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

self.sv.pagingEnabled=YES;

边缘弹动效果

self.sv.bounces=YES;

滚到顶部

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

self.sv.scrollsToTop=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;

视图的滚动分为两个阶段:

拖拽(手指在屏幕上)

减速(手指离开屏幕)

self.sv.delegate=self;

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

最小比例

self.sv.minimumZoomScale=0.5;

最大比例

self.sv.maximumZoomScale=2;

#pragma mark -缩放协议方法

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

{

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

returnscrollView.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= scrollView.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:0.5animations:^{

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

}];

}

推荐阅读更多精彩内容