IOS -UIScrollView 详解

来源:互联网 发布:大学生网络借贷案例 编辑:程序博客网 时间:2024/06/06 03:39

 UIScrollVIew是 ios里面经常用到的一个空间,今天我给大家讲解一下它的用法以及常用属性,有不对的地方大家请指出,相互学习!

 创建一个新的工程,在ViewController里面,实现UIScrollVieController代理。  

  @interface ViewController : UIViewController<UIScrollViewDelegate>

  然后在.m的@interferce VIewController()里面  声明一个全局scrollView;

@interface ViewController ()

{

    UIScrollView   *scrollView;

}

- (void)viewDidLoad

{

    [superviewDidLoad];


    //实例化Scrollview

    scrollView=[[UIScrollViewalloc]initWithFrame:self.view.bounds];

    CGFloat width=scrollView.frame.size.width;

    CGFloat height=scrollView.frame.size.height;

        for (NSInteger i =1 ; i <=5; i ++)

    {

        UIImage *image=[UIImageimageNamed:[NSStringstringWithFormat:@"%ld.jpg",i]];

        UIImageView *imageview=[[UIImageViewalloc]initWithImage:image];


        //如果 imageView不设置大小 默认大小为所添加图片的大小  - 1 是让初始图像的坐标原点 (0 , 0)

        imageview.frame=CGRectMake((i -1) * width,0 , width, height);

       

        [scrollView addSubview:imageview];

        

    }

    [scrollView setContentSize:CGSizeMake(5 * width, height)];

    [self.viewaddSubview:scrollView];

    

    //设置scrollview 的其他属性   让效果更好

    // 设置弹簧效果 关闭 默认为开启

    [scrollView setBounces:NO];

    [scrollViewsetDelegate:self];

    //允许分页默认为关闭

    [scrollViewsetPagingEnabled:YES];

    //因为 scrollView的大小和屏幕大小一直 所以没有水平滚动条 SO 关键垂直滚动条

    [scrollViewsetShowsHorizontalScrollIndicator:NO];

}

UIscrollview的操作基本完毕,现在为了效果更好看 ,我们可以添加一个UIPageController

@interface ViewController ()

{

    UIScrollView   *scrollView;

    UIPageControl  *pageControl;

}

在上面方法的内部   添加以下代码

    //scrollview 的属性设置告一段落为了让效果更加美观我们添加一个分页控制器 ;

    pageControl=[[UIPageControlalloc]init];

    //设置控制器大小

    [pageControlsetBounds:CGRectMake(0,0,150,50)];

    //把控制器添加到视图并添加方法

    [pageControlsetCenter:CGPointMake(self.view.bounds.size.width/2,self.view.bounds.size.height-100)];

    [pageControladdTarget:selfaction:@selector(pageControlValueChanged:)forControlEvents:UIControlEventValueChanged];

    //设置控制器页数和当前页数

    [pageControlsetNumberOfPages:5];

    [pageControlsetCurrentPage:0];

    

    //设置控制器选中颜色和未选中颜色

    [pageControlsetPageIndicatorTintColor:[UIColorredColor]];

    [pageControlsetCurrentPageIndicatorTintColor:[UIColorblueColor]];

    


    [self.viewaddSubview:pageControl];

}

 实现UIPageController的方法

#pragma mark - 页面控制



-(void)pageControlValueChanged:(UIPageControl *)pageControl

{

//    NSLog(@"%d",pageControl.currentPage);

//    

//    CGFloat offsetX=pageControl.currentPage *scrollView.bounds.size.width;

//    

//    [scrollView setContentOffset:CGPointMake(offsetX, 0) animated:YES];

   

    CGRect bounds = scrollView.bounds;

    bounds.origin.x =CGRectGetWidth(bounds) * pageControl.currentPage;

    bounds.origin.y =0;

    [scrollViewscrollRectToVisible:boundsanimated:YES];

}

现在基本的效果已经出来了,但是我们发现,点击pageControl的时候,页面会转动,但是拖动页面转动的时候,pageControl却不会变,所以要实现这个代理方法

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

NSLog(@"scrollViewDidEndDecelerating");

int page = scrollView.contentOffset.x /200;

NSLog(@"scrollViewDidScrollscrollViewDidScroll  %f",scrollView.contentOffset.x / 200);

pageControl.currentPage = page;

}

现在介绍一下UIScrollview和UIPageControl的常用  
    //------------------UIScrollView常用属性----------------------
    CGSize size=CGSizeMake(width, height);
    //设置scrollview的内容大小 需要一个CGSize类型;
    [scrollView setContentSize:size];


    //设置每次的偏移量 需要一个CGPoint类型
    [scrollView setContentOffset:point animated:YES];


    //增加滚动视图 四周的增加滚动范围
    UIEdgeInsets edge = UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0);
    [scrollView setContentInset:edge];


    //设置弹簧效果  默认为开启
    [scrollView setBounces:NO];


    //当滚动界面设置小于当前界面时依然反弹 默认为NO
    [scrollView setAlwaysBounceHorizontal:NO];
    [scrollView setAlwaysBounceVertical:NO];


    //是否开启分页设置 默认为NO
    [scrollView setPagingEnabled:YES];


    //是否启用滚动  默认为YES
    [scrollView setScrollEnabled:YES];


    //表示滚动指示器从封闭滚动视图中被嵌入的距离  需要一个UIEdgeInsets类型
    [scrollView setScrollIndicatorInsets:edge];


    //设置指示器的风格 不选择为默认风格
    [scrollView setIndicatorStyle:UIScrollViewIndicatorStyleBlack];
    
    
    //------------------UIPageControl常用属性----------------------
    //设置控制器大小
    [pageControl setBounds:CGRectMake(0, 0, 150, 50)];


    //设置一共有几个点
    [pageControl setNumberOfPages:5];


    //设置当前显示第几个点
    [pageControl setCurrentPage:0];


    //设置指示器的点的颜色
    [pageControl setPageIndicatorTintColor:[UIColor redColor]];


    //设置选中的点得颜色
    [pageControl setCurrentPageIndicatorTintColor:[UIColor blackColor]];


    //添加事件方法
    [pageControl addTarget:self action:@selector(PageValueChanged:) forControlEvents:UIControlEventValueChanged];

0 0
原创粉丝点击