在.h文件当中实现UIScrollViewDelegate协议,让控制器充当代理:

  1. #import <UIKit/UIKit.h>
  2.  
  3. @interface RPRootViewController : UIViewController <UIScrollViewDelegate>
  4.  
  5. @property (retain, nonatomic) UIScrollView *scrollView;
  6. @property (retain, nonatomic) UIPageControl *pageControl;
  7.  
  8. @end

实现文件如下:

  1. #import "RPRootViewController.h"
  2.  
  3. @interface RPRootViewController ()
  4.  
  5. @end
  6.  
  7. @implementation RPRootViewController
  8.  
  9. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
  10. {
  11. self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
  12. if (self) {
  13. // Custom initialization
  14. }
  15. return self;
  16. }
  17.  
  18. - (void)viewDidLoad
  19. {
  20. [super viewDidLoad];
  21.  
  22. CGFloat scrollWidth = [[UIScreen mainScreen] bounds].size.width;
  23. CGFloat scrollHeight = [[UIScreen mainScreen] bounds].size.height;
  24.  
  25. //定义分页控件
  26. self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(, , scrollWidth, 20)];
  27. self.pageControl.center = CGPointMake(scrollWidth * 0.5, scrollHeight - );
  28. self.pageControl.userInteractionEnabled = NO;
  29. self.pageControl.numberOfPages = ;
  30. self.pageControl.currentPage = ;
  31.  
  32. //定义滚动视图
  33. self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(, , scrollWidth, scrollHeight)];
  34. self.scrollView.contentSize = CGSizeMake( * scrollWidth, scrollHeight);
  35. self.scrollView.pagingEnabled = YES;
  36. self.scrollView.delegate = self;
  37.  
  38. //添加7张图片
  39. for (int i = ; i <= ; i++) {
  40. UIImageView *imageView = [[[UIImageView alloc] initWithFrame:CGRectMake(scrollWidth * (i - ), , scrollWidth, scrollHeight)] autorelease];
  41. imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"img%d.png", i]];
  42. [self.scrollView addSubview:imageView];
  43. }
  44.  
  45. [self.view addSubview:self.scrollView];
  46. [self.view addSubview:self.pageControl];
  47. }
  48.  
  49. - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
  50. int pageNo = self.scrollView.contentOffset.x / self.scrollView.frame.size.width;
  51. self.pageControl.currentPage = pageNo;
  52. }

首先,先添加滚动视图后添加分页控件,并且禁止分页控件的用户交互,不然视图就不会出现滚动效果了。

在代理方法当中用偏移量除以控件宽度,可以得到页数。

利用UIScrollView和UIPageControl实现多页图片欢迎页面的更多相关文章

  1. 使用UIScrollView和UIPageControl做一个能够用手势来切换图片的效果

    利用UIScrollView的滚动效果来实现,先上图: 实现过程是:在viewController里先增加UIScrollView和UIPageControl: -(void) loadView { ...

  2. UI:UIScrollView、UIPageControl

    一.UIScrollView的常⽤用属性 二.UIScrollView的常⽤用代理方法 三.UIPageControl的使⽤用 四.UIPageControl与UIScrollView的结合使⽤用 U ...

  3. UIScrollView和UIPageControl学习使用

    # UIScrollView和UIPageControl # 概要 对于同一个页面需要展示很多图片信息.子视图等的这样的需求,我们可以采用控件UIScrollVIew,与之常常一起使用的控件是UIPa ...

  4. 利用CSS、JavaScript及Ajax实现图片预加载的三大方法

    预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...

  5. 利用CSS、JavaScript及Ajax实现图片预加载的三大方法(转)

    预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...

  6. 利用CSS、JavaScript及Ajax实现图片预加载的三大方法及优缺点分析

    预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...

  7. iOS 新手引导页图片适配及其尺寸大全

    早期新手引导页只需要几张图片就可以解决了,随着屏幕尺寸的的越来越多,新手引导页的尺寸适配起来越来越麻烦,否则就会出现尺寸不匹配,图片被拉伸的情况 目前应该是有2种方法来解决这个问题 方法1: 根据每款 ...

  8. 在QMainWindow中利用多个QDockWidget构成标签页tab(原创)

    功能描述: 在QMainWindow下,使用多个QDockWidget构成可切换,可拖动,可关闭的标签页:标签页的切换由相关联的QAction触发. 实现效果: 代码如下: QDockWidget * ...

  9. ionic 图标以及启动页图片不能正确加载

    前段时间莫名其妙的发现发布的app不能正常的现实图标和启动页了,加载出来的图标以及图片显示的都是cordova的默认图片以及启动页图片 在网上找了很多教程各种查找都不能解决方法 表现原因为: 项目根目 ...

随机推荐

  1. Struts2命名空间问题

    警告: No configuration found for the specified action: '/myNameSpace/login.action' in names 今天花了点时间把st ...

  2. 常用在线工具及API网址总结

    1.小图标在线查找 https://www.iconfinder.com/ 2.在线做图,Flowchart流程图,BPMN图,Org组织结构图等 http://www.processon.com/ ...

  3. Invalidate(TRUE)与Invalidate(FALSE)区别(前者会发送WM_ERASEBKGND消息全部刷新,然后使用WM_PAINT消息绘制,而后者只发送WM_PAINT消息)

    使用Invalidate(TRUE)函数时,它会向消息队列中添加了WM_ERASEBKGND和WM_PAINT两个消息. 使用Invalidate(FALSE)函数时,它只会向消息队列中添加了WM_P ...

  4. 动态规划——数字三角形(递归or递推or记忆化搜索)

    动态规划的核心就是状态和状态转移方程. 对于该题,需要用抽象的方法思考,把当前的位置(i,j)看成一个状态,然后定义状态的指标函数d(i,j)为从格子出发时能得到的最大和(包括格子本身的值). 在这个 ...

  5. 初探ListView和Adapter

    关于Android Adapter(适配器),参考Devin Zhang’s blog.简单的说,Adapter起到的作用是使得前端的显示和后端的数据能够适配,用以下代码作为例子 1234567891 ...

  6. javascript小知识1 this的用法

    函数的应用: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  7. 【Android】自带Theme

    [Android]自带Theme android之uses-permission   在编写Android程序时经常会忘记添加权限,下面是网上收集的关于Android uses-permission的 ...

  8. 【数据库】SQL优化方法汇总

    最近在研究SQL语句的优化问题. 下面是从网上搜集的,有的地方有点老了,可是还是有很多可以借鉴的地方的. 如何加快查询速度? 1.升级硬件. 2.根据查询条件,建立索引,优化索引.优化访问方式,限制结 ...

  9. poj2478--欧拉函数打表

    此题中对时间有要求,如直接使用欧拉函数求解,每输入一个n,就得进行循环求出<n的每个数的欧拉函数, 这样会超时, 于是我们可预先将欧拉函数打表, 再进行一个循环加法运算,便可不超时得解. #in ...

  10. stat 函数讲解

    表头文件:    #include <sys/stat.h>                     #include <unistd.h>定义函数:    int stat( ...