ios轮播

//
//  ViewController.m
//  Ocproject
//
//  Created by wenzhe yi on 2018/2/28.
//  Copyright ? 2018年 wenzhe yi. All rights reserved.
//

#import "Shuanghui.h"
#import "ViewController.h"

#define imageCount 5

#define kscrollviewsize (_scrollView.frame.size)

@interface ViewController()<UIScrollViewDelegate>

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

@property(strong,nonatomic) NSTimer *timer;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self initUi];

    [self initPageController];
    [self initTimer];

}

-(void)initTimer{
    _timer  = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(autoBanner) userInfo:nil repeats:YES];
}
-(void)initUi{
    [self initScrollView];

}

//开始拖拽的时候计时器停止
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    [_timer invalidate];
}

//拖拽结束的时候在开启定时器
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    [self initTimer];
}
-(void)initPageController{
    _pageController.numberOfPages=imageCount;

    //非选中颜色
    _pageController.pageIndicatorTintColor=[UIColor grayColor];

    //选中的颜色
    _pageController.currentPageIndicatorTintColor=[UIColor redColor];

    //当前页
    _pageController.currentPage=0;
}
-(void)initScrollView{
//    UIImageView *iv = [[UIImageView alloc]initWithFrame:_scrollView.bounds];
//
//    //设图片
//    iv.image=[UIImage imageNamed:@"img_01"];
//
//    //添加
//    [_scrollView addSubview:iv];

   // CGSize scrollViewSize=_scrollView.frame.size;

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

        CGFloat imageX=i*kscrollviewsize.width;

        UIImageView *iv =[[UIImageView alloc] initWithFrame:CGRectMake(imageX, 0, kscrollviewsize.width, kscrollviewsize.height)];

        //imagepath string
        NSString *path=[NSString stringWithFormat:@"img_%02d",i+1];

        //设置pic
        iv.image=[UIImage imageNamed:path];

        //add

        [_scrollView addSubview:iv];
    }
    _scrollView.contentSize=CGSizeMake(5*kscrollviewsize.width, 0);

    //隐藏滚动条
    _scrollView.showsHorizontalScrollIndicator=NO;

    //分页效果
    _scrollView.pagingEnabled=YES;
    //代理
    _scrollView.delegate=self;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void)needMoreMeet{
    NSLog(@"I LIST");
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{

}
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

    _pageController.currentPage=scrollView.contentOffset.x/kscrollviewsize.width;

}

//无线循环轮播点击事件
- (IBAction)move:(id)sender {
    [self autoBanner];
}

-(void)autoBanner{
    CGPoint offset=_scrollView.contentOffset;

    NSInteger currentPage = _pageController.currentPage;

    if(currentPage==imageCount-1){
        currentPage=0;
        offset=CGPointZero;

    }else{
        currentPage+=1;
        offset.x+=kscrollviewsize.width;
    }

    _pageController.currentPage=currentPage;
    [_scrollView setContentOffset:offset animated:YES];

}

@end

原文地址:https://www.cnblogs.com/norm/p/8485472.html

时间: 2024-10-27 02:43:12

ios轮播的相关文章

一步一步拆解一个简单的iOS轮播图(三图)

导言(可以不看): 不吹不黑,也许是东半球最简单的iOS轮播图拆分注释(讲解不敢当)了(tree new bee).(一句话包含两个人,你能猜到有谁吗?提示:一个在卖手机,一个最近在卖书)哈哈... 我第一次项目中需要使用轮播图的时候我是用的别人写好的一个轮子,那个轮播封装很多东西,包括比如可以设置pageControl的位置,可以传图片url或本地图片,缓存网络图片等等.但是我觉得没必要搞那么复杂,我喜欢简单并足够做事的东西.现在有时间便想自己把它拆解一下.看了一些简书上一些作者写的关于轮播图

iOS 轮播中遇到的问题(暂停、重新启动)

一. 轮播的优化或者用Collection来实现 二.Timer  问题 我们可以这样来使用一个Timer [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(function:) userInfo:nil repeats:NO]; //这是一个执行一次,不重复的Timer 不过大多数情况下,我们需要的Timer都是需要不断执行d 下面是轮播控件里面Timer的一个扩展: @implementati

iOS轮播图的实现

//使用轮播图展示一组图片信息 //定时器  使循环 [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(runTimePage) userInfo:nil repeats:YES]; //初始化scrollview self.scrollview = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, 320, 200)]; self.scrol

IOS轮播图

轮播图播放的主要技术在于: cell的封装.这里采用UICollectionViewCell实现. #import <UIKit/UIKit.h> @interface CircleViewCell : UICollectionViewCell @property (nonatomic, strong) UIImage* image; @property (nonatomic, assign) NSInteger index; @end // //  CircleViewCell.m // 

ios轮播图片用法

// // ZQRViewController.m // 04-图片轮播器 // // Created by apple on 17-08-24. // Copyright (c) 2017年 zzqqrr. All rights reserved. // #define ZQRImageCount 5 #import "ZQRViewController.h" @interface ZQRViewController () <UIScrollViewDelegate> @

移动端 触屏轮播图(完善版)

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=320,user-scalable=no" /> <title>ios 轮播图简版<

IOS 图片轮播实现原理 (三图)

IOS 图片轮播实现原理的一种 图片轮播所要实现的是在一个显示区域内通过滑动来展示不同的图片. 当图片较少时我们可以采用在滚动视图上添加很多张图片来实现. 但是如果图片数量较多时,一次性加载过多图片会浪费内存,影响性能. 因此我们要采取适当地方法来实现图片的轮播. 下面我们只是简单的介绍很多方法中的一种简单的实现原理. 一 二 三 四 五 六 七

iOS开发UI篇—无限轮播(功能完善)

iOS开发UI篇—无限轮播(功能完善) 一.自动滚动 添加并设置一个定时器,每个2.0秒,就跳转到下一条. 获取当前正在展示的位置. 1 [self addNSTimer]; 2 } 3 4 -(void)addNSTimer 5 { 6 // NSTimer timerWithTimeInterval:<#(NSTimeInterval)#> target:<#(id)#> selector:<#(SEL)#> userInfo:<#(id)#> repe

iOS开发之ImageView复用实现图片无限轮播

在上篇博客中iOS开发之多图片无缝滚动组件封装与使用给出了图片无限轮播的实现方案之一,下面在给出另一种解决方案.今天博客中要说的就是在ScrollView上贴两个ImageView, 把ImageView进行交替切换来实现图片的无限轮播,在轮播时去修改ImageView上的图片.上一篇博客中是有几张图片就实例化几个ImageView, 然后事先把Image贴到相应的ImageView上,这种做法比较简单,而且易于实现. 今天这篇博客就要实现使用两张ImageView, 交替的区展示Image,