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

欢迎您的访问...


【iOS系列】-UIScrollView的介绍及结合UIPageControl实现图片播放的实例的更多相关文章

  1. iOS系列 基础篇 05 视图鼻祖 - UIView

    iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...

  2. iOS系列 基础篇 08 文本与键盘

    iOS系列 基础篇 08 文本与键盘 目录: 1. 扯扯犊子 2. TextField 3. TextView 4. 键盘的打开和关闭 5. 打开/关闭键盘的通知 6. 键盘的种类 7. 最后再扯两句 ...

  3. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

  4. iOS系列 基础篇 06 标签和按钮 (Label & Button)

    iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...

  5. iOS程序-UIScrollView的基本使用

    iOS程序-UIScrollView的基本使用 scrollView的几个属性contentSize contentOffset contentInset 1.不能向上滑动很可能是因为contentS ...

  6. 【iOS系列】- iOS吸附效果的实现 之 UICollectionView的使用全解

    [iOS系列]- iOS吸附效果的实现 之 UICollectionView的使用全解 UICollectionView可以做很多的布局,在iOS开发中较为重要,所以这里就以实例来讲解UICollec ...

  7. 【iOS系列】-A server with the specified hostname could not be found.问题解决

    [iOS系列]-A server with the specified hostname could not be found.问题解决 Reveal 在iOS开发中可以方便查看界面的布局,较为方便的 ...

  8. 【iOS系列】-UIWebView加载网页禁止左右滑动

    [iOS系列]-UIWebView加载网页禁止左右滑动 问题: 做项目时候,用UIWebView加载网页的时候,要求是和微信网页中打开的网页的效果一样,也即是只能上下滑动,不能左右滑动,也不能缩放. ...

  9. 【iOS系列】-UIButton的非常规使用

    [iOS系列]-UIButton的非常规使用 主要介绍UIButton在开发中得小技巧,使用好了,可以达到很奇妙的效果. 1:设置按钮内边距属性,可以呈现出相框的效果 btn.contentEdgeI ...

随机推荐

  1. virsh 命令

    virsh是用与管理虚拟化环境中的客户机和Hypervisor的命令行工具,与virt-manager等工具类似,也是调用libvirt API来实现虚拟化的管理. 在使用virsh命令行进行虚拟化管 ...

  2. Django框架基础知识07-常用查询及表关系的实现

    1.常用的模型字段类型 https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types 2.字段的常用参数 官方文档:http ...

  3. my97datepicker插件日期值改变事件 等同于input的onchang()时间

    官网Demo地址http://www.my97.net/demo/index.htm <input type="text" class="Wdate" v ...

  4. LeetCode (17)Letter Combinations of a Phone Number

    题目 Given a digit string, return all possible letter combinations that the number could represent. A ...

  5. Vijos 1308 埃及分数(迭代加深搜索)

    题意: 输入a.b, 求a/b 可以由多少个埃及分数组成. 埃及分数是形如1/a , a是自然数的分数. 如2/3 = 1/2 + 1/6, 但埃及分数中不允许有相同的 ,如不可以2/3 = 1/3 ...

  6. ul标签中,li标签的移除、属性值获取

  7. python +selenium 自带case +生成报告的模板

    https://github.com/huahuijay/python-selenium2这个就是 python +selenium的 里面还自带case 然后也有生成报告的模板 我的: https: ...

  8. python023 Python3 标准库概览

    Python3 标准库概览 操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作 ...

  9. mysql 分段统计数据

    一个简单的分段统计的问题:student 表{id,name,score} 字段,统计各个分数段的人数.规则:60以下不及格,60-80良,80-100优. SELECT sum(CASE when ...

  10. 通过rsync+inotify实现数据的实时备份 【转载】

       在前面的博文中,我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足  与传统的cp ...