iOS开发UI篇—用纯代码写实现图片轮播

一、实现效果

实现图片的自动轮播

二、实现代码

  1 //  手写图片轮播器
  2 //
  3 //  Created by 鑫 on 14-10-9.
  4 //  Copyright (c) 2014年 梁镋鑫. All rights reserved.
  5 //
  6 #define TXImageCount 5
  7
  8 #import "TXViewController.h"
  9
 10
 11 @interface TXViewController ()<UIScrollViewDelegate>
 12 {
 13     UIScrollView *_scrollView;
 14     UIPageControl *_pageControl;
 15 }
 16 @property(nonatomic ,strong)NSTimer *timer;
 17
 18 @end
 19
 20 @implementation TXViewController
 21
 22 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
 23 {
 24     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
 25     if (self) {
 26         // Custom initialization
 27     }
 28     return self;
 29 }
 30
 31 - (void)viewDidLoad
 32 {
 33     [super viewDidLoad];
 34
 35
 36     _scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(10, 85, 300, 130)];
 37
 38     //一些固定参数
 39     CGFloat imageW = _scrollView.frame.size.width;
 40     CGFloat imageH = _scrollView.frame.size.height;
 41     CGFloat imageY = 0;
 42     _scrollView.backgroundColor = [UIColor blackColor];
 43     [self.view addSubview:_scrollView];
 44
 45     _scrollView.delegate = self;
 46     //添加五张图片到scrollview中
 47     for (int i = 0; i<TXImageCount; i++) {
 48         UIImageView *imageView = [[UIImageView alloc] init];
 49
 50         // 设置frame
 51         CGFloat imageX = i * imageW;
 52         imageView.frame = CGRectMake(imageX, imageY, imageW, imageH);
 53
 54         // 设置图片
 55        NSString *name = [NSString stringWithFormat:@"img_0%d", i + 1];
 56         imageView.image = [UIImage imageNamed:name];
 57         [_scrollView addSubview:imageView];
 58
 59
 60         //添加定时器
 61
 62         [self addTimer];
 63
 64
 65
 66     }
 67     //添加分页点
 68     _pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(107, 128, 106, 37)];
 69     _pageControl.backgroundColor=[UIColor orangeColor];
 70
 71     //设置pageControl的总页数
 72
 73     _pageControl.numberOfPages = TXImageCount;
 74
 75     [_pageControl addTarget:self action:@selector(changPage) forControlEvents:UIControlEventValueChanged];
 76     [self.view addSubview:_pageControl];
 77     //设置内容尺寸
 78     CGFloat contentW =TXImageCount *imageW;
 79     _scrollView.contentSize = CGSizeMake(contentW, 0);
 80
 81     //隐藏水平滚动条
 82     _scrollView.showsHorizontalScrollIndicator =NO;
 83
 84     //分页
 85     _scrollView.pagingEnabled = YES;
 86
 87
 88 }
 89 /**
 90  *  点击pageControl改变scrollView的页面
 91  */
 92 -(void)changPage
 93 {
 94     CGPoint offest=CGPointMake(_pageControl.currentPage*_scrollView.frame.size.width, 0);
 95     [_scrollView setContentOffset:offest animated:YES];
 96 }
 97 /**
 98  *  添加定时器
 99  */
100 -(void)addTimer
101 {
102      self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
103     //提高优先级
104     [[NSRunLoop currentRunLoop ] addTimer:self.timer forMode:NSRunLoopCommonModes];
105 }
106 /**
107  *  移除定时器
108  */
109 -(void)removeTimer
110 {
111     [self.timer invalidate];
112     self.timer =nil;
113 }
114 -(void)nextImage
115 {
116     //1.增加pageControl的页码
117     int page = 0;
118     if (_pageControl.currentPage ==TXImageCount-1) {
119         page = 0;
120     }
121     else
122     {
123         page = _pageControl.currentPage +1;
124     }
125     //计算scrolview滚动的位置
126     CGFloat offsetX = page *_scrollView.frame.size.width;
127     CGPoint offset = CGPointMake(offsetX, 0);
128     [_scrollView setContentOffset:offset animated:YES];
129
130 }
131 #pragma mark  --代理方法
132
133 -(void)scrollViewDidScroll:(UIScrollView *)scrollView
134 {
135     //根据scrollview的滚动位置决定pageControl显示第几页
136     CGFloat scrollW = _scrollView.frame.size.width;
137
138     int page = (_scrollView.contentOffset.x+scrollW *0.5)/scrollW;
139     _pageControl.currentPage =page;
140 }
141 - (void)didReceiveMemoryWarning
142 {
143     [super didReceiveMemoryWarning];
144     // Dispose of any resources that can be recreated.
145 }
146 /**
147  *  停止拖拽时调用
148
149  */
150 -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
151 {
152     // 停止定时器(一旦定时器停止了,就不能再使用)
153     [self addTimer];
154 }
155
156 /**
157  *  开始拖拽的时候调用
158  */
159 -(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
160 {
161     // 停止定时器(一旦定时器停止了,就不能再使用)
162     [self removeTimer];
163 }
164
165
166
167 @end
时间: 2024-10-24 18:26:55

iOS开发UI篇—用纯代码写实现图片轮播的相关文章

ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局

本文转自 :http://www.cnblogs.com/wendingding/p/3761730.html ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局 一.实现效果 二.使用纯代码自定义一个tableview的步骤 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到contentView中

iOS开发UI基础—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局

ios开发UI基础-使用纯代码自定义UItableviewcell实现一个简单的微博界面布局 一.实现效果 二.使用纯代码自定义一个tableview的步骤 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到contentView中) 进行子控件一次性的属性设置(有些属性只需要设置一次, 比如字体\固定的图片) 3.提供2个模型 数据模型:

iOS开发UI篇—以微博界面为例使用纯代码自定义cell程序编码全过程(一)

iOS开发UI篇-以微博界面为例使用纯代码自定义cell程序编码全过程(一) 一.storyboard的处理 直接让控制器继承uitableview controller,然后在storyboard中把继承自uiviewcontroller的控制器干掉,重新拖一个tableview controller,和主控制器进行连线. 项目结构和plist文件 二.程序逻辑业务的处理 第一步,把配图和plist中拿到项目中,加载plist数据(非png的图片放到spooding files中) 第二步,字

IOS开发UI篇--UITableView的自定义布局==纯代码布局

UITableView中除了利用系统的UItableViewCell不能完成需求进行布局时,还可以进行自定义布局: 自定义布局分为两类:(1)利用代码进行创建 (2)利用xib进行实现: 下面对利用代码进行创建分析: 应用场景:像微博,等列表数据展示(由于微博的每个单元格的数据大小不一致,所以得计算每个单元格的大小) 分析:前提是获取列表数据,然后建立每个单元格的模型(建立单元格模型应继承UITableViewCell)复写 - (id)initWithStyle:(UITableViewCel

iOS开发UI篇—从代码的逐步优化看MVC

iOS开发UI篇—从代码的逐步优化看MVC 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他是否直接吃第五个,前面四个不用吃就饱了?) 1.完成基本要求的代码(使用了字典转模型和xib连线) (1)文件结构 (2)主要代码 字典转模型部分: YYappInfo.h头文件 // // YYappInfo.h // 12-视图改进(1) // // Created by apple on 14

文顶顶 iOS开发UI篇—从代码的逐步优化看MVC

iOS开发UI篇—从代码的逐步优化看MVC 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他是否直接吃第五个,前面四个不用吃就饱了?) 1.完成基本要求的代码(使用了字典转模型和xib连线) (1)文件结构 (2)主要代码 字典转模型部分: YYappInfo.h头文件 1 // 2 // YYappInfo.h 3 // 12-视图改进(1) 4 // 5 // Created by a

iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序

iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序 一.plist文件和项目结构图 说明:这是一个嵌套模型的示例 二.代码示例: YYcarsgroup.h文件代码: // // YYcarsgroup.h // 07-汽车展示(高级) // // Created by apple on 14-5-28. // Copyright (c) 2014年 itcase. All rights reserved. // #import <Foundation/Foundation.h> @

iOS开发UI篇—懒加载

iOS开发UI篇—懒加载 1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化 2.使用懒加载的好处: (1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 (2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合 3.代码示例 1 // 2 // YYViewController.m 3

iOS开发UI篇—UITableview控件使用小结

iOS开发UI篇—UITableview控件使用小结 一.UITableview的使用步骤 UITableview的使用就只有简单的三个步骤: 1.告诉一共有多少组数据 方法:- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; 2.告诉每组一共有多少行 方法:- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSIntege