ios 学习 广告图片轮播器
//
// ViewController.m
// 图片轮播器
//
// Created by zjj on 15/5/23.
// Copyright (c) 2015年 zjj. All rights reserved.
// #import "ViewController.h"
#define kCount 5
@interface ViewController () <UIScrollViewDelegate>
@property (nonatomic,strong)UIScrollView *scroView;
@property (nonatomic,strong)UIPageControl *pageControl;
@property (nonatomic,strong)NSTimer *time;
@end @implementation ViewController
/**
开发思路
1>创建scrollView
2>用UIimageView加载图片 并修改图片的x值
3>创建分页控件UIpageControl
4>绑定分页圆点点 点击圆点点换下一页
5>绑定时钟
*/
#pragma mark 初始化scrollView
- (UIScrollView *)scroView
{
if (_scroView == nil) {
_scroView = [[UIScrollView alloc]initWithFrame:CGRectMake(, , , )];
_scroView.backgroundColor = [UIColor blueColor];
[self.view addSubview:_scroView];
_scroView.bounces = NO;
_scroView.showsHorizontalScrollIndicator = NO;
_scroView.showsVerticalScrollIndicator = NO;
_scroView.contentSize = CGSizeMake(_scroView.bounds.size.width * kCount, );
self.scroView.pagingEnabled = YES;
_scroView.delegate = self;
}
return _scroView ;
}
#pragma mark 初始化PageCOntrol
- (UIPageControl *)pageControl
{
if (_pageControl == nil) {
// 分页控件 跟scrollView 是独立的
_pageControl = [[UIPageControl alloc]init];
_pageControl.numberOfPages = kCount;
CGSize size = [_pageControl sizeForNumberOfPages:kCount];
_pageControl.bounds = CGRectMake(, , size.width, size.height);
_pageControl.center = CGPointMake(self.scroView.center.x, self.scroView.center.y+(self.scroView.center.y/));
_pageControl.pageIndicatorTintColor = [UIColor redColor];
_pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
[self.view addSubview:_pageControl];
self.pageControl = _pageControl;
}
return _pageControl;
} - (void)viewDidLoad {
[super viewDidLoad];
for (int i = ; i < kCount; i++) {
NSString *icon = [NSString stringWithFormat:@"img_%02d",i + ];
UIImageView *imgView = [[UIImageView alloc]initWithFrame:self.scroView.bounds];
imgView.image = [UIImage imageNamed:icon];
[self.scroView addSubview:imgView];
}
// 添加事件之后执行该块代码重新赋值x值
[self.scroView.subviews enumerateObjectsUsingBlock:^(UIImageView *imageView, NSUInteger idx, BOOL *stop) {
CGRect frame = imageView.frame;
frame.origin.x = idx * frame.size.width;
imageView.frame = frame;
}];
self.pageControl.currentPage = ;
[self.pageControl addTarget:self action:@selector(pageChange:) forControlEvents:UIControlEventTouchUpInside];
[self start];
}
#pragma mark 启动时钟
- (void)start
{
// self.time = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(changeTime) userInfo:nil repeats:YES];// 按住屏幕 画面会停止轮播但 时钟会累积 连跳好几页
self.time = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(changeTime) userInfo:nil repeats:YES];// 按住屏幕时钟 画面仍然不会停止轮播
[[NSRunLoop currentRunLoop] addTimer:self.time forMode:NSRunLoopCommonModes];// 添加到(运行循环)轮循
} - (void)changeTime
{
int page = (self.pageControl.currentPage + ) % kCount;
self.pageControl.currentPage = page;
[self pageChange:self.pageControl];
} #pragma mark 对scrollView进行操作 根据图片偏移位置计算页数
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
// NSLog(@"%@,%f", NSStringFromCGPoint(_scroView.contentOffset),_scroView.bounds.size.width);//取出scrollview中当前页的x
int page = _scroView.contentOffset.x / _scroView.bounds.size.width;
self.pageControl.currentPage = page; //当前页数
} - (void)pageChange :(UIPageControl *)page
{
CGFloat x = page.currentPage * self.scroView.bounds.size.width;
[self.scroView setContentOffset:CGPointMake(x, )animated:YES];
}
#pragma mark 拖动图片时停止时钟
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[self.time invalidate];
}
#pragma mark 松手后再次启动时钟
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
[self start];
}
@end
ios 学习 广告图片轮播器的更多相关文章
- ios之无限图片轮播器的实现
首先实现思路:整个collectionView中只有2个cell.中间始终显示第二个cell. 滚动:向前滚动当前cell的脚标为0,向后滚动当前的cell脚标为2.利用当前cell的脚标减去1,得到 ...
- UIScrollView实现图片轮播器及其无限循环效果
图片轮播器: 一.实现效果 实现图片的自动轮播 二.实现代码 storyboard中布局 代码: 1 #import "YYViewController.h" ...
- IOS第六天(3:scrollView 图片轮播器)
IOS第六天(3:scrollView 图片轮播器) #import "HMViewController.h" #define kImageCount 5 @interface H ...
- ios之无限 自动 图片轮播器的实现
比较之前发布的手动无限图片轮播器进行了改进.实现了自动无限轮播的功能.比较适合团购标题分类下面的轮播器功能. 实现思路: * 开启一个定时器,把操作放入消息循环池.每隔一定时间,操作执行一次. * 注 ...
- iOS 简易无限滚动的图片轮播器-SDCycleScrollView
@interface ViewController () <</span>SDCycleScrollViewDelegate> @end @implementation Vie ...
- ios开发图片轮播器以及定时器小问题
一:图片轮播器效果如图:能实现自动轮播,到最后一页时,轮播回来,可以实现拖拽滚动 二:代码: #import "ViewController.h" ; @interface Vie ...
- UIScrollView实现图片轮播器的无限滚动
简介 在现在的一些App中常常见到图片轮播器,一般用于展示广告.新闻等数据,在iOS内并没有现成的控件直接实现这种功能,但是通过UIScrollView的允许分页设置,可以实现滚动轮播的功能. 轮播原 ...
- JavaScript图片轮播器
先贴上html的代码 <div class="ImgDiv"> <div class="Imgs" id="imgScroll&qu ...
- 推荐一款超级漂亮的HTML5 CSS3的图片轮播器
最近在学习HTML5和CSS3,印象最深的是CSS3的动画功能,不仅有浏览器原生支持,执行效率高,而且免去在js中自己管理timer. 本来想写一个图片轮播器练练手,结果在网上发现一个国人写的开源的图 ...
随机推荐
- Android dex分包方案
当一个app的功能越来越复杂,代码量越来越多,也许有一天便会突然遇到下列现象: 1. 生成的apk在2.3以前的机器无法安装,提示INSTALL_FAILED_DEXOPT 2. 方法数量过多,编译时 ...
- OpenCV C++ 计算文件夹中对象文件数目及批量处理后保存到txt文件
//采用windows控制台实现计算文件夹中对象总数以及批量读取对象 //#include <afx.h> //和windows.h是一样的作用 #include <opencv2/ ...
- phalcon count统计
单表count: //How many robots are there? $number = Robots::count(); echo "There are ", $numbe ...
- 矩阵奇异值分解(SVD)及其应用
机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用(好文) [简化数据]奇异值分解(SVD) <数学之美> 第15章 矩阵运算和文本处理中的两个分类问题
- Office 多版本共存
1 32位共存 假如已经安装了Office 2003(必定是32位的),那么安装 32位Office 2010 时会出现如下错误: 图1.1 解决办法: 1.将下述三个注册表项导出到文件2003A.r ...
- java 集合(Vector)不做重点
Vector: 底层也是维护了一个Object数组,实现与ArrayList是一样的, 但其线程是安全的,效率低.除了比较老的系统,是不会用到的. 笔试题:ArrayList 和 Vector 的区别 ...
- angular--todomvc
类名:ng-class="{completed:todo.completed}" ng-repeat="todo in todoData" ng-model=& ...
- screenX clientX pageX的区别
screenX:鼠标位置相对于用户屏幕水平偏移量,而screenY也就是垂直方向的,此时的参照点也就是原点是屏幕的左上角. clientX:跟screenX相比就是将参照点改成了浏览器内容区域的左上角 ...
- Sublime Text 3编辑器安装
一.安装Sublime Text 3 到Sublime Text 3官网下载最新版本:http://www.sublimetext.com/3 一路Next下去即可完成安装.安装完Sublime Te ...
- Loadrunner基础:Loadrunner Controller基本概念和使用
Loadrnner Controller 介绍 当Vuser脚本开发完成以后,可以使用Controller将这个执行脚本的用户从单用户转化为多用户,从而模拟大量用户的操作,形成负载(多用户单循环,多用 ...