码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发UI篇----UI基础之美女轮播器(自动轮播)

时间:2015-09-03 23:08:40      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

  1 #import "ViewController.h"
  2 
  3 @interface ViewController () <UIScrollViewDelegate>
  4 
  5 @property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
  6 @property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
  7 
  8 @property (weak,nonatomic) NSTimer *timer;
  9 
 10 @end
 11 /**
 12  *  View的代理属性都是weak的,否则就会循环强引用,导致内存泄露
 13  */
 14 @implementation ViewController
 15 
 16 //当控制器上得View已被加载完毕就会执行这个方法
 17 - (void)viewDidLoad {
 18     [super viewDidLoad];
 19     
 20 // 把美女视图添加到scrollView中
 21    
 22 //      取出scrollView的frame
 23     CGRect frame = self.scrollView.frame;
 24 //  定义变量记录多少张图片
 25     int numOfImages = 8;
 26     
 27     for (int i = 0; i < numOfImages; ++i) {
 28         
 29 //      创建UIImageView
 30         UIImageView *imageView = [[UIImageView alloc] init];
 31 //      添加到scrollView中
 32         [self.scrollView addSubview:imageView];
 33 //      给imageView设置图片
 34 //      拼接图片名称
 35         NSString *imageName = [NSString stringWithFormat:@"%02d",i+1];
 36 //      设置图片
 37         imageView.image = [UIImage imageNamed:imageName];
 38 //      取出scrollView的frame(共用代码移到外边)
 39 //        CGRect frame = self.scrollView.frame;
 40 //      计算imageView的x坐标
 41         frame.origin.x = frame.size.width * i;
 42 //      设置imageViewframe
 43         imageView.frame = frame;
 44         
 45     }
 46     
 47 // 设置scrollView的contentSize
 48 // 0表示支持垂直方向的滚动
 49     self.scrollView.contentSize = CGSizeMake(frame.size.width * numOfImages, 0);
 50     
 51 // 设置支持分页
 52     self.scrollView.pagingEnabled = YES;
 53 // 去掉水平的滚动条
 54     self.scrollView.showsHorizontalScrollIndicator = NO;
 55     
 56 // 设置控制为scrollView代理
 57     self.scrollView.delegate = self;
 58     
 59 // 开始轮播
 60     [self startTimer];
 61 }
 62 
 63 
 64 - (void) nextImage
 65 {
 66 // 调试输出的关键字__func__ 等价于 __FUNCTION__
 67 // -[ViewController nextImage]  -表示对象方法  ViewController 是哪个类的 nextImage是哪个方法
 68 //    NSLog(@"%s",__FUNCTION__);
 69     
 70 // 1.获取当前页
 71     NSInteger page = self.pageControl.currentPage;
 72 // 2.计算下一页
 73     if (page == self.pageControl.numberOfPages - 1) {
 74         page = 0;
 75     }else{
 76         page++;
 77     }
 78     
 79     [UIView animateWithDuration:1 animations:^{
 80 
 81         //  3.让scrollView滚到下一页
 82         self.scrollView.contentOffset = CGPointMake(page * self.scrollView.frame.size.width, 0);
 83         
 84     }];
 85 
 86 }
 87 
 88 //开启一个全新的定时器
 89 - (void) startTimer
 90 {
 91     //  定时器
 92     //  scheduled 调度(执行)
 93     //   Interval 间隔的时间 (s)
 94     //  target 目标(调用谁的方法)
 95     //  selector 方法(调用哪一个方法)
 96     //  repeats 是否需要重复执行
 97 //  做了两件事 1.创建NSTimer的对象
 98 //           2。把这个NSTimer以默认形式添加到了主运行循环中 (默认优先级低于事件处理的优先级)
 99 //    self.timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
100     
101 // 1.创建NSTimer对象
102     NSTimer *timer  = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
103 // 2.添加到主运行循环中
104 //  Run 运行 Loop 循环
105 //  NSDefaultRunLoopMode 默认模式(低于事件处理优先级)
106 //  NSRunLoopCommonModes 通用模式 (于事件处理的优先级相同)
107     [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
108     
109 // 3.记录当前的timer
110     self.timer = timer;
111 }
112 
113 
114 #pragma mark - 代理方法
115 /**
116  *  当用户即将拽住scrollView的时候执行这个
117  */
118 - (void) scrollViewWillBeginDragging:(UIScrollView *)scrollView
119 {
120 //  停止定时器
121 //  让定时器失效,一旦失效就不能在使用了。
122     [self.timer invalidate];
123 }
124 /**
125  *  当用户的手指从scrollViwew上抬起的时候执行这个方法
126  */
127 - (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
128 {
129 //  重新开始调度
130     [self startTimer];
131     
132 }
133 
134 //当scrollView的contentOffset发生改变都会调用该方法
135 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
136 {
137     
138 // round 函数可以进行四舍五入
139    int page = round(scrollView.contentOffset.x / scrollView.frame.size.width) ;
140     
141     self.pageControl.currentPage = page;
142 }
143 
144 @end

 

iOS开发UI篇----UI基础之美女轮播器(自动轮播)

标签:

原文地址:http://www.cnblogs.com/DoNib-Coding/p/4780778.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!