UIScorlView 循环滚动
- (void) createAdScrollView
{
_view = [[UIView alloc] initWithFrame:CGRectMake(, , WIDTH, )];
[self.view addSubview:_view];
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(, , WIDTH, )];
_scrollView.delegate = self;
// 设置scrollView的contentSize
_scrollView.contentSize = CGSizeMake(WIDTH*(self.scrollViewDataArray.count+), );
_scrollView.pagingEnabled = YES;
_scrollView.delegate = self; // 注意这里不需要add,因为在headerView时直接return _scrollView;
[_view addSubview:_scrollView]; for (int i=; i<self.scrollViewDataArray.count+; i++) {
int y = i;
if (y == self.scrollViewDataArray.count) {
y = ;
}
UIButton *button = [ZCControl createButtonWithFrame:CGRectMake(WIDTH*i, , WIDTH, ) title:nil imageName:nil bgImageName:nil target:self method:@selector(buttonClick:)];
// [button sd_setBackgroundImageWithURL:[NSURL URLWithString:self.scrollViewDataArray[y][@"image_path"]] forState:UIControlStateNormal]; placeholderImage:[UIImage imageNamed:@"recommend_Face"];
button.tag = +i;
[_scrollView addSubview:button];
}
// 添加定时器
[NSTimer scheduledTimerWithTimeInterval: target:self selector:@selector(timerClick) userInfo:nil repeats:YES]; // 添加小白点
pageController = [[UIPageControl alloc]initWithFrame:CGRectMake(, , , )];
pageController.numberOfPages = self.scrollViewDataArray.count; // 白色看不清设置成其他颜色
pageController.pageIndicatorTintColor = [UIColor grayColor]; // pageController虽然是和scrollView并用的,但是并不加载在sc
[_view addSubview:pageController]; // kvo观察者模式,负责观察某一个对象其中某一个值的变化,如果有新值变化就通知你。需要注意的是,观察者模式需要手动销毁,当前界面销毁并不代表观察者模式也销毁了
// sc观察的对象,self为响应的对象,path为观察sc其中的一个属性,使用字符串来表示这个属性,要求与属性名保持一致。options为观察值变化为有新的变化的时候,通知我。context上下文 [_scrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil];
}
- (void)timerClick{
// 首先判断_scrollView当前的偏移
CGPoint point = _scrollView.contentOffset;
point.x = point.x+WIDTH; [UIView animateWithDuration: animations:^{
_scrollView.contentOffset = point;
}completion:^(BOOL finished) {
CGPoint point1 = _scrollView.contentOffset;
if (_scrollView.contentOffset.x/WIDTH == self.scrollViewDataArray.count) {
_scrollView.contentOffset = CGPointZero;
}
}];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
// keyPath为观察的那个key也就是属性,object为观察的的那个对象,change为变化的值
int x = _scrollView.contentOffset.x/;
pageController.currentPage = x;
}
UIScorlView 循环滚动的更多相关文章
- IOS实现自动循环滚动广告--ScrollView的优化和封装
一.问题分析 在许多App中,我们都会见到循环滚动的视图,比如广告,其实想实现这个功能并不难,用ScrollView就可以轻松完成,但是在制作的过程中还存在几个小问题,如果能够正确的处理好这些小问题, ...
- Jquery制作--循环滚动列表
自己模仿JQ插件的写法写了一个循环滚动列表插件,支持自定义上.下.左.右四个方向,支持平滑滚动或者间断滚动两种方式,都是通过参数设置.JQ里面有些重复的地方,暂时没想到更好的方法去精简.不过效果还是可 ...
- marquee 实现首尾相连循环滚动效果
<marquee></marquee>可以实现多种滚动效果,无需js控制.使用marquee标签不仅可以滚动文字,也可以滚动图片,表格等 marquee标签不是HTML3.2 ...
- Expression Blend4经验分享:文字公告无缝循环滚动效果
这次分享一个类似新闻公告板的无缝循环滚动效果,相信很多项目都会应用到这个效果.之前我也百度了一下,网上的一些Silverlight的文字或图片滚动效果,都是一次性滚动的,如果要做到无缝循环滚动,多数要 ...
- ul 仿 table 循环滚动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- html+css+javascript实现列表循环滚动示例代码
使用html+css+javascript实现列表循环滚动,设置时间定时,在规定的时间内替换前一个节点的内容,具体示例如下,感兴趣的朋友可以参考下 说明:设置时间定时,在规定的时间内替换前一个节点的内 ...
- UIScrollView循环滚动1
现在基本每一个商业APP都会有循环滚动视图,放一些轮播广告之类的,都是放在UIScrollView之上.假如我要实现N张图片的轮播,我借鉴了几个博文,得到两种方法实现: [第一种]:如下图(图片来源于 ...
- ios UIPickerView 技巧集锦(包括循环滚动)
摘自: http://blog.csdn.net/ipromiseu/article/details/7436521 http://www.cnblogs.com/dabaopku/archive/2 ...
- UIPickerView 循环滚动(一种假象)
因为网上没有查到相关方法,故而采用一种假象的方法来实现,选项循环滚动 - (void)viewDidLoad { [super viewDidLoad]; /** UIPickerView 选择器 * ...
随机推荐
- NBU7.0 Image Cleanup作业在没有配置hot catalog backup的情况下失败,Status=1
Issue NBU7.0 Image Cleanup作业在没有配置hot catalog backup的情况下失败,Status=1 Error NBU7.0 Image Cleanup作业失败, D ...
- shopnc2014年11版数据库字典
shopnc_activity 表注释: 活动表 字段 类型 空 默认 注释 activity_id mediumint(9) 否 id activity_title varchar(255) 否 ...
- PHP OO 编程笔记
1. 类中的方法不是全局方法,可以和外部的普通方法重名,例如: <?php function time(); 则会报错:不能重新声明方法 Fatal error: Cannot redeclar ...
- ecshop中$user对象
ecshop中$user对象 2011-10-01 18:41:23| 分类: ECSHOP | 标签:ecshop $user 对象 |举报|字号 订阅 http://blog.163.c ...
- Ruby--正则
1. 只取数字(用的是字符串替换) gsub(/[^0-9]/, “”)
- Win2008R2 zip格式mysql 安装与配置
一.百度mysql5.6 ZIP 64位免安装版 下载好后 解压到D盘下 二.可以考虑修改my.ini里面的配置 character-set-server=utf8 这句是编码格式设定 ...
- Oracle数据库--SQL
1.事务(Transaction ) 1)命名事务 set transaction name ‘transaction_name ’; 2)查看事务是否存在 select name from v$tr ...
- asp.net webform杂记
context.Response.ContentType = "text/plain"; string encodeFileName = HttpUtilit ...
- Java 常见问题思考
Java中的成员变量是选择在声明时赋值还是在构造函数中赋值? // 通过构造函数赋值 public class UserRequestImpl extends ModuleImplBase { pri ...
- Kafka 0.8 配置参数解析
http://kafka.apache.org/documentation.html#configuration Broker Configs 4个必填参数, broker.id Each bro ...