Oc 滚动视图

来源:互联网 发布:平面广告图制作软件 编辑:程序博客网 时间:2024/06/08 12:10

一、UIScrollView的概念

UIScrollView是一个能够滚动的试图控件,能够滑动的视图,都是继承于UIScrollView,而UIScrollView继承于UIView

UIScrollView的子类:UITableView、UITextView、UICollectionView

二、UIScrollView的概念

contentSize 能够让视图显示更多的内容,contSize就是UIScrollView实际内容大小.如果contentSize的尺寸比ScrollView小,或者相等,则ScrollView不能滑动

contentOffset平移量,能够直接定位到你想看的内容

contentInset 给ScrollView四周增加额外的滚动区域,内容的内边框

showsHorizontalScrollIndicator 是否设置水平滚动条

showsVerticalScrollIndicator 是否设置垂直滚动条

bounces 是否设置回滚效果

scrollEnabled 是否滚动

indicatorStyle 设置滚动条样式

pagingEnabled 设置滚动分页

maximumZoomScale图片最多能放大多少倍(要放大、缩小得挂上代理)

minimumZoomScale图片最多能缩小多少倍

decelerationRate减速速率

*设置不包含导航栏解决全屏滚动视图上面导航栏处无图片的问题,图片从导航栏一下开始定位计算,这个以后做项目总会有必要记得

self.edgesForExtendedLayout=UIRectEdgeNone;

设置滚动视图方向垂直

scrollView.direction=Vertical;

delegate 代理

三、UIScrollView的代理方法(放大、缩小、拖拽)

已经滚动时调用- (void)scrollViewDidScroll:(UIScrollView*)scrollView;已经缩放- (void)scrollViewDidZoom:(UIScrollView *)scrollView;开始拖拽- (void)scrollViewWillBeginDragging:(UIScrollView*)scrollView;将要拖拽结束获得降速的速率和偏移量- (void)scrollViewWillEndDragging:(UIScrollView*)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inoutCGPoint *)targetContentOffset;拖拽结束将要降速- (void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate;开始降速- (void)scrollViewWillBeginDecelerating:(UIScrollView*)scrollView结束降速- (void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView滚动动画将要消失- (void)scrollViewDidEndScrollingAnimation:(UIScrollView*)scrollView设置缩放视图- (nullableUIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView开始缩放- (void)scrollViewWillBeginZooming:(UIScrollView*)scrollView withView:(nullableUIView*)view结束缩放以及缩放的比例- (void)scrollViewDidEndZooming:(UIScrollView*)scrollView withView:(nullableUIView*)view atScale:(CGFloat)scale;是否可以滚动到顶部设置YES可以- (BOOL)scrollViewShouldScrollToTop:(UIScrollView*)scrollView移动到顶部调用- (void)scrollViewDidScrollToTop:(UIScrollView*)scrollView;

下面一个demo来展示下

#import "ViewController.h"@interface FirstLoginViewController ()<UIScrollViewDelegate>{    UIScrollView *theScroll;    NSArray *arr;    UIPageControl *thePage;}
- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view.    theScroll = [[UIScrollView alloc]initWithFrame:self.view.frame];    theScroll.delegate = self;    [self.view addSubview:theScroll];    theScroll.pagingEnabled = YES;    arr = @[@"1.JPG",@"2.JPG",@"3.JPG"];    theScroll.contentSize = CGSizeMake(self.view.frame.size.width*arr.count, self.view.frame.size.width);    for (int i = 0; i<arr.count; i++)    {        UIImageView *theImg = [[UIImageView alloc]initWithFrame:CGRectMake(theScroll.frame.size.width * i, 0, self.view.frame.size.width, self.view.frame.size.height)];        theImg.userInteractionEnabled = YES;        theImg.image = [UIImage imageNamed:arr[i]];        if (i == arr.count-1)        {            UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake((self.view.frame.size.width-100)/2, 550, 100, 40)];            [btn setTitle:@"立即体验" forState:UIControlStateNormal];            [btn setBackgroundColor:[UIColor blackColor]];            [btn addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];            btn.layer.cornerRadius = 10;            btn.layer.masksToBounds = YES;            [theImg addSubview:btn];        }        [theScroll addSubview:theImg];    }    //创建页面控制器    thePage = [[UIPageControl alloc]initWithFrame:CGRectMake((self.view.frame.size.width-100)/2, 600, 100, 30)];    thePage.numberOfPages = arr.count;    thePage.currentPage = 0;    [self.view addSubview:thePage];}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{    NSInteger index = theScroll.contentOffset.x / theScroll.frame.size.width;    thepage.currentPage = index;}