【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/

欢迎您的访问...


posted @ 2015-04-12 09:29  Darren.Von  阅读(427)  评论(0编辑  收藏  举报
新浪微博:IT_攻城师,github:darren90(欢迎★star点赞)