12-25 学习图片滚动器

//

//  ViewController.m

//  图片滚动器

//

//  Created by Mac on 15/12/25.

//  Copyright © 2015年 Mac. All rights reserved.

//

#import "ViewController.h"

@interface ViewController () <UIScrollViewDelegate>

//从stroyboad中拖来的控件

@property (weak, nonatomic) IBOutlet UIScrollView *scrollVIew;

@property (weak, nonatomic) IBOutlet UIPageControl *pageController;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

NSUInteger count = 5;

//    获得scrollView的尺寸大小,以简便后面的使用。

CGSize size = self.scrollVIew.frame.size;

//   动态生成5个iconView

for (int i = 0; i < count; i ++ ) {

UIImageView *iconView = [[UIImageView alloc]init];

//调用addSubview方法将生成的iconView加入到scrollView中

[self.scrollVIew addSubview:iconView];

//利用图片命名的规律将图片赋给iconView

NSString *imgName = [NSString stringWithFormat:@"img_%02d",i+1];

iconView.image = [UIImage imageNamed:imgName];

//给每个iconView的位置赋值

CGFloat x = i * size.width;

iconView.frame = CGRectMake(x, 0, size.width, size.height);

}

//    设置滚动范围,是所有的iconView的宽度总和

self.scrollVIew.contentSize = CGSizeMake(size.width*count, 0);

//    self.scrollVIew.backgroundColor = [UIColor redColor];

//    关闭水平进度条,打开页面效果,设置代理(controller)

self.scrollVIew.showsHorizontalScrollIndicator = NO;

self.scrollVIew.pagingEnabled = YES;

self.scrollVIew.delegate = self;

//    设置定时器,并加入runloop线程中,调用nextImage方法

//    //      1 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(action:) userInfo:nil repeats:NO];

//    TimerInterval : 执行之前等待的时间。比如设置成1.0,就代表1秒后执行方法

//

//    target : 需要执行方法的对象。

//

//    selector : 需要执行的方法

//

//    repeats : 是否需要循环

NSTimer *timer = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];

NSRunLoop *runloop = [NSRunLoop currentRunLoop];

[runloop addTimer:timer forMode:NSDefaultRunLoopMode];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

- (void)nextImage

{

//    获得pageController的页数

NSInteger page =  self.pageController.currentPage;

if (page == self.pageController.numberOfPages - 1) {

page = 0;

}else{

page++;

}

//    获得下一张应当滚动到的位置

CGFloat offsetX = page * self.scrollVIew.frame.size.width;

//    调用动画效果

[UIView animateWithDuration:2 animations:^{

self.scrollVIew.contentOffset = CGPointMake(offsetX, 0);

}];

}

#pragma mark - scrollView的代理方法

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

//    当scrollView滚动时,调用的方法,代理是controller

//    设置页数

NSUInteger page =  scrollView.contentOffset.x / scrollView.frame.size.width;

self.pageController.currentPage = page;

}

@end

----------------------------------------------分割---------------------------------------------

还有很多的地方不太明白,比如

//    设置定时器,并加入runloop线程中,调用nextImage方法

//    //      1 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(action:) userInfo:nil repeats:NO];

//    TimerInterval : 执行之前等待的时间。比如设置成1.0,就代表1秒后执行方法

//

//    target : 需要执行方法的对象。

//

//    selector : 需要执行的方法

//

//    repeats : 是否需要循环

NSTimer *timer = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];

中,

1NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(action:) userInfo:nil repeats:NO];

生成的定时器,target应当是需要执行方法的对象,在这里是SELF,也就是定时器自己,但是在后续的nextImage方法中,

- (void)nextImage

{

//    获得pageController的页数

NSInteger page =  self.pageController.currentPage;

if (page == self.pageController.numberOfPages - 1) {

page = 0;

}else{

page++;

}

//    获得下一张应当滚动到的位置

CGFloat offsetX = page * self.scrollVIew.frame.size.width;

//    调用动画效果

[UIView animateWithDuration:2 animations:^{

self.scrollVIew.contentOffset = CGPointMake(offsetX, 0);

}];

中self显然不是定时器自己而是Viewcontroller,这一点非常不明白 ,待解决

感觉自己对self和super关键字了解的还不够。

时间: 2024-10-26 19:30:19

12-25 学习图片滚动器的相关文章

Android 高级UI设计笔记12:ImageSwitcher图片切换器

1. ImageSwitcher ImageSwitcher是Android中控制图片展示效果的一个控件,如:幻灯片效果...,颇有感觉啊.做相册一绝 2. 重要方法 setImageURI(Uri uri):设置图片地址 setImageResource(int resid):设置图片资源库 setImageDrawable(Drawable drawable):绘制图片 3. 设置动画效果 imageSwitcher.setInAnimation(AnimationUtils.loadAni

Android实现图片滚动控件

怎样实现图片滚动器的效果. 今天就总结下.这里我也不多说什么.直接源代码.不懂的直接提问我. 第一种实现方式:利用Gallery,但是这个现在已经过时了.我这里不多介绍了.只贴一个核心类. package com.drocode.swithcer; import java.util.TimerTask; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import

WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现

原文:WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放.图片立体轮播.图片倒影立体滚动)效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体机.要求有很炫的展示效果,要有一定的视觉冲击力,可触控操作.当然满足客户的要求也可以有其它途径.但鉴于咱是搞 .NET技术的,首先其冲想到的微软WPF方面,之前对WPF的了解与学习也只是停留在比较浅的层面,没有进一步深入学习与应用.所以在项目接来以后,也就赶鸭子上架了

Android高级图片滚动控件,编写3D版的图片轮播器

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482089 大家好,好久不见了,最近由于工作特别繁忙,已经有一个多月的时间没写博客了,我也是深感惭愧.那么今天的这篇既然是阔别了一个多月的文章,当然要带来更加给力点的内容了,那么话不多说,赶快进入到今天的正题吧. 说 到图片轮播器,很多的Android应用中都会带有这个功能,比如说网易新闻.淘宝等.最新我们公司的一款应用也加入了这个功能,并且在图片轮播的基础上 还增加了三维立体

Qt项目实战2:简单的图片查看器(1)

在博文http://www.cnblogs.com/hancq/p/5817108.html中介绍了使用空的Qt项目创建带有菜单栏.工具栏的界面. 这里,使用一个简单的图片查看器项目,来熟悉一下Qt的图片显示和基本操作. 该项目分为两部分: (1)实现图片的打开.关闭.居中显示.上一张/下一张切换 (2)实现图片的放大.缩小.左旋.右旋.另存为等操作 需要用的Qt类: QFileDialog QImage QPixmap QFileInfo 使用空的Qt项目创建带有菜单栏和工具栏的界面的操作参考

android 背景图片滚动

昨天在给客户端做天气展示页面的时候,发现很多app的天气页面背景图片都会缓慢移动,形成了一种3d的感觉.例如下雨,静态图片缓慢移动,雨滴位置变换感觉就真的在下雨.云朵的移动也很酷.于是研究了一下午.写了一个自定义view控件. 我的自定义控件继承了view,重写ondraw方法.本人C#转android才3个月,以下代码如有错或者有可以改进的地方,请各位在评论中指出.望不吝赐教! ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

图片滚动(待美化)

1:原有图片4张,无论向左或者向右滚动,都会出现空白,所以需要在原有4张图片的基础下自加得到8张图片, 2:向左滚动:当图片滚到到整个ul宽度的一半时(aDiv.offsetLeft<-aDiv.offsetWidth/2) 将整个ul的左边距置0(aDiv.style.left='0px';),通俗说即将整个图片从左往右第一张图片拉倒最开始的位置. 3:向右滚动:当图片滚动到ul的左边距大于0时(aDiv.offsetLeft>0) 将整个ul的左边距设为整个ul宽度的一半(aDiv.sty

【转】九步学习python装饰器

本篇日志来自:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 纯转,只字未改.只是为了学习一下装饰器.其实现在也是没有太看明白,对于装饰器我就是用的时候找例子,能蒙对,但是用过之后一段时间就忘了.还是用的少.有空应该好好看一看的,包括闭包.对于各种现代编程语言来说闭包都是很重要的.在这里先谢过原作者,如有侵权请告知. =-=-=-=-=-=-=-=-=-=-一条不怎么华丽的分隔线-=-=-=-=-=-=-=-=-=-= 这

wap图片滚动特效_无css3 元素js脚本编写

手机图片滑动切换,网上有很多这样的例子,但都借助于其他组件,让代码混乱的不行:还有就是用到css3里的 transform:translate(x,y);移动元素,不过发现在不支持css3的设备上马上完蛋了,所 有下定决心自己做一个,谁知出现了很多的问题,其中最重要的是给图片加链接,网页中的上下滚动条不能在拖动图片的时候滚动,并且不能兼容pc机器上的拖动:在这里就简单介绍一下遇到的问题和解决的方法: 问题一:给图片加上链接后,在拖动的时候总是跳到其他页面: 问题根源主要是不能判断是点击还是拖动,