轮播器

全功能智能图片轮播器——支持多格式导入/自定义尺寸/顺序控制/响应式布局的专业级可视化播放系统 这里提供一个优化后的可执行轮播方案,支持文件选择、自定义尺寸和播放控制等功能:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>高级图片轮播器</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <style> * { margin: 0; padding: 0; box-sizing: border-box; } #c 阅读详情

1. .h

#import <UIKit/UIKit.h>

typedef void(^ClickImageBlock)(NSInteger currentIndex);


@interface LoopScrollView : UIView

- (instancetype)initWithFrame:(CGRect)frame imageArray:(NSArray *)imageArray clickImage:(ClickImageBlock)clickImageBlock;

- (void)invalidateTimer;

@end


2. .m

//

//  LoopScrollView.m

//  轮播器

//

//  Created by 李文良 on 2017/4/20.

//  Copyright © 2017年 王新伟. All rights reserved.

//

#define kWidth  self.frame.size.width

#define kHeight self.frame.size.height

#define kImageCount  3


#import "LoopScrollView.h"

#import "Masonry.h"

#import "UIImageView+WebCache.h"

@interface LoopScrollView()<UIScrollViewDelegate>

/**

 *滚动视图的控件

 */

@property(nonatomic,strong)UIScrollView* scroll;

/**

 *页码指示视图的控件

 */

@property(nonatomic,strong)UIPageControl* pageControl;

/**

 *显示左边图片的控件

 */

@property(nonatomic,strong)UIImageView* LeftImageView;

/**

 *显示中心图片的控件

 */

@property(nonatomic,strong)UIImageView* centerImageView;

/**

 *显示右边图片的控件

 */

@property(nonatomic,strong)UIImageView* rightImageView;

/**

 *保存图片的数组

 */

@property(nonatomic,strong)NSArray* imageArray;

/**

 *图片的当前下标索引

 */

@property(nonatomic,assign)NSInteger  currentIndex;

/**

 *图片总数

 */

@property(nonatomic,assign)NSInteger imageCount;


@property(nonatomic,strong)NSTimer *timer;


@property(nonatomic,copy)ClickImageBlock clickImageBlock;


@property(nonatomic,strong)UITapGestureRecognizer *tap;


@end

@implementation LoopScrollView


- (instancetype)initWithFrame:(CGRect)frame imageArray:(NSArray *)imageArray clickImage:(ClickImageBlock)clickImageBlock

{

    self.imageArray = imageArray;

    self.imageCount = imageArray.count;

    self.clickImageBlock = clickImageBlock;

    return [self initWithFrame:frame];

}

- (instancetype)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        self.currentIndex=0;

        [self createScrollView];

        [self createImageView];

        [self createPageControl];

        [self setImageByIndex:self.currentIndex];

        self.timer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(freshScroll) userInfo:nil repeats:YES];

        [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];


    }

    return self;

}


/**

 *以下是搭建UI界面的方法

 */


-(void)createScrollView

{

    self.scroll=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0,kWidth, kHeight)];

    self.scroll.backgroundColor=[UIColor redColor];

    self.scroll.showsHorizontalScrollIndicator=NO;

    self.scroll.showsVerticalScrollIndicator=NO;

    self.scroll.pagingEnabled=YES;

    self.scroll.bounces=NO;

    self.scroll.delegate=self;

    self.scroll.contentOffset=CGPointMake(kWidth, 0);

    self.scroll.contentSize=CGSizeMake(kWidth*kImageCount, kHeight);

    [self addSubview:self.scroll];

    self.tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImage:)];

    [self.scroll addGestureRecognizer:self.tap];


}


-(void)createPageControl

{

    self.pageControl = [[UIPageControl alloc] init];

    self.pageControl.currentPageIndicatorTintColor=[UIColor redColor];

    self.pageControl.pageIndicatorTintColor=[UIColor blueColor];

    self.pageControl.enabled=YES;

    self.pageControl.numberOfPages = self.imageArray.count;

    [self addSubview:self.pageControl];

    [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) {

        make.centerX.equalTo(self.mas_centerX);

        make.bottom.equalTo(self.mas_bottom).offset(-5);

        make.width.mas_equalTo(60);

        make.height.mas_equalTo(20);

    }];

}

-(void)createImageView

{

    self.LeftImageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, kWidth, 220)];

    [self.scroll addSubview:self.LeftImageView];

    

    self.centerImageView=[[UIImageView alloc]initWithFrame:CGRectMake(kWidth, 0, kWidth, 220)];

    [self.scroll addSubview:self.centerImageView];

    self.centerImageView.backgroundColor = [UIColor yellowColor];

    

    self.rightImageView=[[UIImageView alloc]initWithFrame:CGRectMake(2 * kWidth, 0, kWidth, 220)];

    [self.scroll addSubview:self.rightImageView];

}

#pragma mark------定时器

- (void)freshScroll

{

    [self scrollViewDidEndDecelerating:self.scroll];

}


#pragma mark-----点击图片

- (void)tapImage:(UITapGestureRecognizer *)tap

{

    if (self.clickImageBlock) {

        self.clickImageBlock(self.currentIndex);

    }

}


- (void)invalidateTimer

{

    [self.timer invalidate];

    self.timer = nil;

    [self.tap removeTarget:self action:@selector(tapImage:)];

}


#pragma mark ----刷新图片

-(void)refreshImage

{

    if (self.scroll.contentOffset.x>=kWidth) {

        self.currentIndex=((self.currentIndex+1)%self.imageCount);

    }

    else if(self.scroll.contentOffset.x<kWidth){

        self.currentIndex=((self.currentIndex-1+self.imageCount)%self.imageCount);

    }

    [self setImageByIndex:self.currentIndex];

}


#pragma mark ----该方法根据传回的下标设置三个ImageView的图片

-(void)setImageByIndex:(NSInteger )currentIndex

{

    NSString *currentImageUrl = self.imageArray[currentIndex];

    [self.centerImageView sd_setImageWithURL:[NSURL URLWithString:currentImageUrl] placeholderImage:nil];

    

    NSString *leftImageUrl = self.imageArray[((self.currentIndex-1+self.imageCount)%self.imageCount)];

    [self.LeftImageView sd_setImageWithURL:[NSURL URLWithString:leftImageUrl] placeholderImage:nil];

    

    NSString *rightImageUrl = self.imageArray[((self.currentIndex+1)%self.imageCount)];

    [self.rightImageView sd_setImageWithURL:[NSURL URLWithString:rightImageUrl] placeholderImage:nil];

    self.pageControl.currentPage=currentIndex;

}

#pragma mark ----UIScrollViewDelegate代理方法(停止加速时调用)

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

    [self refreshImage];

    self.scroll.contentOffset = CGPointMake(kWidth,0);

    self.pageControl.currentPage = self.currentIndex;

    NSLog(@"停止了加速,停在第%ld页",self.pageControl.currentPage+1);

}


- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

{

    [self.timer invalidate];

    self.timer = nil;

}


- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

{

    self.timer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(freshScroll) userInfo:nil repeats:YES];

    [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];


}



@end



构建动态轮播背景的JavaScript点名器 JavaScript点名器是一个利用JavaScript语言开发的小工具,主要功能是随机抽取用户设置的名单,以便公平公正地进行点名。这个工具不仅适用于课堂点名,也广泛用于会议抽签、活动抽奖等多种场景。点名器的实现基于前端技术,主要是JavaScript和HTML。通过JavaScript实现随机号码生成,用户输入处理和号码显示,以及点名和暂停功能的交互逻辑。其主要步骤是:- 设计用户交互界面,收集用户输入的名单。- 利用JavaScript内置的随机函数,实现号码的随机抽取。 阅读详情

相关推荐

js轮播器4种

四种轮播器显示,可上下翻页,左右翻页,点击翻页,鼠标移动翻页等

功能强大的图片、文字轮播器——SBCycleScrollView

功能强大的图片、文字轮播器——SBCycleScrollView 1. 项目基础介绍 SBCycleScrollView 是一个开源的图片、文字轮播器项目,主要使用 Swift 语言开发。该项目旨在为开发者提供一个简单易用、功能丰富的轮播器解决方案。通过该项目,开发者可以轻松地在应用中添加图片轮播、文字滚动展示等功能。 2. 项目核心功能 支持多种展示类型:SBCycleScrollView 支...

gitblog_00800的博客 529

支持多浏览器轮播器

支持IE6-11,chrome,safari,chrome

图片轮播器

回顾一下 之前的实现 现在的区别 效果展示 代码说明图片轮播器是iOS开发中经常用到的一个组件,一般是采用UIScrollView来实现,但是系统的UIScrollView并不支持循环滚动,所以必须要自己手动实现。 回顾一下在我从C++转做iOS之后,自己动手实现过一个。由于我本人只学习了不到一个月的iOS,对iOS各种组件的不熟悉,导致在工作中,我经常查找各种资料,开发App也产生了很大的阻碍。那

人生如梦 698

Lumerical官方案例、FDTD时域有限差分法仿真学习(十四)——超透镜(Metalens)

这个例子的目的是设计一个由圆柱形纳米棒组成的衍射超透镜。 纳米棒的半径和排列经过调整以在超透镜表面上产生所需的相位分布。 该设计通过近场和远场分析在 Ansys FDTD、RCWA(严格耦合波分析)和 OpticStudio 中得到验证。...

weixin_45719141的博客 3万+

LilyPad三色LED共阳极控制:从原理到Arduino编程实战

RGB LED作为可编程光源的核心组件,通过红、绿、蓝三原色的加色混合原理,能够生成丰富的色彩。其内部结构主要分为共阳极和共阴极两种类型,这决定了驱动电路的设计和编程逻辑。在电子织物和可穿戴设备领域,掌握RGB LED的控制技术对于实现动态光效和交互反馈至关重要。本文以LilyPad三色LED为例,深入解析其共阳极特性,并详细演示如何结合Arduino进行PWM编程,从而精准控制颜色与亮度,为智能服装、互动艺术装置等项目提供可靠的照明解决方案。

weixin_30237719的博客 614

一个简单实用的轮播器

WEB开发经常实用到一种情况,即某个容器内的各项轮流循环播放显示,同时有相应的导航条提示,因为这个在很多地方可以使用,而且功能很相似的,所以写一个这样的播放功能,共享一下,需要注意的是这个需要jQuery的支持, 这个自己网上搜索下载即可,下面总结出来如下,直接看代码, 一,把如下保存为一个独立的文件 itemPlayerApp.js : //attend: this need jQu

shenzhenNBA的专栏 2680

手把手教你编写I2C读写EEPROM代码(驱动层实现)

从底层寄存器配置到时序控制,详解如何编写可移植的I2C读写EEPROM代码,覆盖起始信号、地址帧、数据收发及ACK应答等关键环节,确保在STM32、ESP32等主流平台稳定运行,真正落地i2c读写eeprom代码需求。

weixin_35756130的博客 508

FLASH广告轮播器

这个广告轮播器分三个部分:1.html代码部分、2.flash.js文件 3.pixviewer.swf FLASH文件相应参数修改即刻1.html代码部分 var focus_width=372 var focus_height=215 var text_height=0 var swf_height = focus_height+text_height var pics=flas

zhuawang的专栏 3840

Anaconda下安装LabelImg

Anaconda下安装LabelImg

LYH8543的博客 756

19、多项式基算术:原理与运算详解

本文深入探讨了有限域 $GF(2^m)$ 中的多项式基算术,详细介绍了加法、减法、乘法和平方运算的原理与实现方法。重点分析了多项式基表示形式、模约简技术以及乘法优化策略,如高基数乘法、并行与顺序乘法器设计,并提到了Karatsuba-Ofman算法在减少乘法次数方面的优势。此外,文章还讨论了多项式基算术在密码学、编码理论等领域的应用前景,并展望了未来在高效算法设计与硬件加速方面的研究方向。

yellow的专栏 150

swift简单学习之轮播器

初学swift 语法之类的还有点蒙,简单的写了一个轮播器的封装,没有精加工 不喜勿喷!!! import UIKit class ScrollViewLoop: UIView,UIScrollViewDelegate {     var ImgUrl = NSMutableArray()     private var count = 0     var delegate : circl

ZHZMAREN的博客 455

基于Python的农业市场价格抓取与供需分析:现代爬虫技术与实战应用

在正式开始爬虫开发之前,我们首先了解爬虫的基本概念和工作原理。爬虫(Web Scraping)是通过编程的方式,自动从互联网上获取信息的技术。它可以帮助我们提取HTML页面中的特定数据,通常用于收集并处理大量信息。发送HTTP请求:爬虫需要向目标网站发送请求,获取网站的HTML页面内容。解析HTML页面:通过HTML解析器对获取的页面内容进行解析,提取其中需要的数据。数据清洗与存储:将提取的数据进行清洗,去除多余的字符或无关内容,然后存储到合适的格式(如CSV文件、数据库等)中。数据分析与可视化。

2201_76125261的博客 1117

jQyery实现轮播器

看到各大网站上都有一个轮播器的效果,自己不禁也想做一个,查了资料,看了轮播器的原理,慢慢的试着做了做,最终效果勉勉强强 原理:如图,试想一下,若是将<ul>的width属性值设置的很宽,直到可以装下你所有的图片,而每一个图片又用<li>包着并且设置了左浮动。 那么当我们向左移动ul的时候并且移动的距离为<li>的宽度,第二个<li&gt...

dengbeizhuo8768的博客 176

ROSTCM6+Gephi的网络语义分析详细教程(附案例实战)

ROSTCM6是武汉大学沈阳教授研发编码的国内目前唯一的以辅助人文社会科学研究的大型免费社会计算平台。该软件可以实现微博分析、聊天分析、全网分析、网站分析、浏览分析、分词、词频统计、英文词频统计、流量分析、聚类分析等一系列文本分析。Gephi是一款开源免费跨平台基于JVM的复杂网络分析软件,可用于各种图形和网络的可视化和探索,是最受欢迎的网络可视化软件之一。

m0_64336780的博客 1万+

Python爬虫实战:东方财富股吧与雪球舆情数据实时爬取与情绪指标挖掘

本文详细介绍如何使用Python爬虫技术实时爬取东方财富股吧和雪球平台的讨论数据,结合股价波动构建情绪分析指标。我们将使用最新的异步爬虫技术、自然语言处理方法和可视化工具,为量化交易提供数据支持。文章包含完整的代码实现和技术细节,适合有一定Python基础的读者学习。

2201_76125261的博客 1224

Bootstrap-打造自己的轮播器

在上篇博客中介绍了Bootstrap框架的一些基本情况。也通过一个小例子说明了如何具体在项目中使用这个框架。相信大家对这套框架已经有了一定认识。 这篇博客就介绍一下Bootstrap实际应用在项目中时所遇到的一个问题。博客标题已经说明了这篇博客的内容将是关于Bootstrap轮播器的。 什么是轮播器?轮播器大家经常看到,无论是视频网站、新闻网站还是某宝网站等等。他们的首页都会有一个轮播器,用来

969

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Javascrip之轮播器的实现

Javascript视频已经进行到最后了这部分主要是实现了一些功能,我们一般在网站上都能够看到很多动画特效,殊不知这些特效都是用CSS+JS和页面html代码来实现的上篇博客我们了解的base.js和tool.js的作用都是我们在后面用到的,在我们看淘宝的时候我们知道看不同的衣服图片不断闪动,但是当我们将鼠标固定到一张图片时,他又能停止那这又是怎么实现的呢,这就是我们看到的轮播器的作用首先我们要有

郭蕾蕾 努力的包子 1491

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

android简单轮播器代码,简单实现android轮播图

轮播图是很常用的一个效果 核心功能已经实现 没有什么特殊需求 自己没事研究的 所以封装的不太好 一些地方还比较糙 为想要研究轮播图的同学提供个参考目前测试图片为mipmap中的图片 没有写从网络加载图片 可自行根据需求在getShowView()方法中修改1.定时切换通过handle延时发送通知改变界面 然后在切换viewpage的界面之后 再次发送此延时通知 就ok咯 还可以通过timer定时器...

weixin_30741979的博客 376

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

iOS开发那些事儿(一)轮播器

前言 市面上绝大部分的APP被打开之后映入眼帘的都是一个美轮美奂的轮播器,所以能做出一个符合需求、高效的轮播器成为了一个程序员的必备技能。所以今天的这篇博客就来谈谈轮播器这个看似简单的控件其中蕴含的道理。 正文    首先我们来分析一下该如何去实现一个类似下图的轮播器(图片数量、URL由服务器返回):         策略一:U...

HB8889的博客 212

轮播器连续点击问题

                                    轮播器连续点击问题 目的:当一次轮播结束方可点击进行下一次轮播 方法:如果轮播器使用的是transition:动画未结束不可再进行下次轮播 var flag = false; oRight.onclick = function(){ if(flag) return; //如果是true表示动画未结束...

shaonian1996 1104

javascript实现轮播器

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt; &lt;

Ibelievesunshine的博客 449

OC Control NewPagedFlowView(卡片轮播器)

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。 效果 提供的属性和方法 /** * 默认为横向 */ @property (nonatomic,assign) FHXNewPagedFlowViewOrientation orientation; @property (nonatomic, strong) UIS

weixin_38716347的博客 634
上一篇: 帮助页
下一篇: iOS多线程开发之NSOperation用法总结-----经典
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值