• 【iOS系列】-UIScrollView的介绍及结合UIPageControl实现图片播放的实例


    【iOS系列】-UIScrollView的介绍及结合UIPageControl实现图片播放的实例

    第一:UIScrollView的常用属性

    //表示UIScrollView内容的尺寸,滚动范围
    @property(nonatomic) CGSize contentSize; 
    
    //在UIScrollView的4周增加额外的滚动区域
    @property(nonatomic) UIEdgeInsets contentInset; 
    
    //表示UIScrollView滚动的位置(以内容为起点),一开始的滚动位置
    @property(nonatomic) CGPoint contentOffset; 
    
    //设置带有动画的滚动
    [self.scrollView setContentOffset:offset animated:YES];
    

    第二:UIScrollView的常用方法

    // 用户开始拖拽时调用
    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
    // 滚动到某个位置时调用
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView;
    // 用户结束拖拽时调用
    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
    

    实例一:scrollView实现捏合(缩放)的效果

    self.scrollView.delegate = self;
     // 设置最大和最小的缩放比例
     self.scrollView.maximumZoomScale = 2.0;
     self.scrollView.minimumZoomScale = 0.2;
    /**
     *  当用户使用捏合手势的时候会调用,实现
     *
     *  @return 返回的控件就是需要进行缩放的控件
     */
    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
    {
        return self.minionView;
    }
    

    实例二:实现常见的图片播放效果

    源码下载:https://github.com/darren90/UIScrollView-UIPageControl

    思路:可以把要显示的图片拼接起来,放到scrollview中,同时设置scrollview的contentSize的X值(水平方向滚动)为图片的总宽度,这样就好了。

    scrollview这样畸形设置

        scrollView.contentSize = CGSizeMake(scrollViewW*numImageCount, 0);
        scrollView.contentInset = UIEdgeInsetsMake(0, 20, 0, 20);
        scrollView.showsHorizontalScrollIndicator = NO;
        scrollView.delegate = self;
        scrollView.pagingEnabled = YES;
    

    实现scrollview的代理方式

    -(void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
        CGFloat scrollW = scrollView.frame.size.width;
        CGFloat width = scrollView.contentOffset.x;
        int page = (width  + scrollW * 0.5) / scrollW;
        self.pageControl.currentPage = page;
    }
    

    注:详细的实现可参考源码。


    附:NSTimer的介绍:

    两种定时器:

    1:NSTimer:时间间隔大

    2:CADisplayLink:时间间隔小

    获取定时器:

    第一:需要调用fire方法才可以走得定时器:
    timerWithTimeInterval
    timerWithTimeInterval

    第二:会自动走的定时器:
    scheduledTimerWithTimeInterval

    停止定时器
    ivaladate

    把timer添加到主线程:

    //默认没有优先级
    //extern NSString* const NSDefaultRunLoopMode;
    //提高优先级
    //extern NSString* const NSRunLoopCommonModes;
    
    [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
    

    作者:Darren

    微博:@IT_攻城师

    github:@Darren90

    博客:http://www.cnblogs.com/fengtengfei/

    欢迎您的访问...


  • 相关阅读:
    Vue cli 安装慢的原因和解决记录
    spring-boot
    illustrator 2018 cc
    illustrator 2018 cc
    illustrator 2018 cc
    illustrator 2018 cc- 画板技巧
    Tomcat 用户密码配置
    CentOS7上解决tomcat不能被外部浏览访问
    Ubuntu
    SPI、I2C、UART(转)
  • 原文地址:https://www.cnblogs.com/fengtengfei/p/4419049.html
Copyright © 2020-2023  润新知