猫猫学IOS(十一)UI之图片自动轮播

2024-09-05 07:48

本文主要是介绍猫猫学IOS(十一)UI之图片自动轮播,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

猫猫分享,必须精品

素材代码地址:http://blog.csdn.net/u013357243/article/details/44646873
原文地址:http://blog.csdn.net/u013357243?viewmode=contents

先看效果

这里写图片描述

这里写图片描述

这里写图片描述

代码

//ps:新建iOS交流学习群:304570962 
可以加猫猫QQ:1764541256 或则微信znycat 
让我们一起努力学习吧。 
原文:http://blog.csdn.net/u013357243?viewmode=contents
//  NYViewController.m
//  05 -  图片轮播器
//
//  Created by apple on 15-3-25.
//  Copyright (c) 2015年 znycat. All rights reserved.
//#import "NYViewController.h"#define kImageCount 5@interface NYViewController () <UIScrollViewDelegate>
@property (nonatomic, strong) UIScrollView *scrollView;
@property (nonatomic, strong) UIPageControl *pageControl;@property (nonatomic, strong) NSTimer *timer;
@end@implementation NYViewController//懒加载加载scrollView
-(UIScrollView *)scrollView
{if (_scrollView == nil) {_scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(10, 20, 300, 130)];_scrollView.backgroundColor = [UIColor redColor];[self.view addSubview:_scrollView];//contentSize//高度为0 只水平滚动self.scrollView.contentSize = CGSizeMake(kImageCount * _scrollView.bounds.size.width, 0);//取消弹簧效果_scrollView.bounces = NO;//取消滚动条_scrollView.showsHorizontalScrollIndicator = NO;//水平_scrollView.showsVerticalScrollIndicator = NO;//竖直//要分页_scrollView.pagingEnabled = YES;//设置代理_scrollView.delegate = self;}return _scrollView;
}-(UIPageControl *)pageControl
{if (_pageControl == nil) {//分页控件,本质上和scrollView没有任何关系,是两个独立的控件_pageControl = [[UIPageControl alloc]init];//总页数_pageControl.numberOfPages = kImageCount;//控件尺寸CGSize size = [_pageControl sizeForNumberOfPages:kImageCount];_pageControl.bounds = CGRectMake(0, 0, size.width, size.height);_pageControl.center = CGPointMake(self.view.center.x, 130);//设置颜色_pageControl.pageIndicatorTintColor = [UIColor redColor];_pageControl.currentPageIndicatorTintColor = [UIColor blackColor];[self.view addSubview:_pageControl];//添加监听方法/**在OC中,绝大多数“继承UIControl控件”,都可以监听UIControlEventValueChanged事件,只有button除外,button是点得,是touchup。。。*/[_pageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];}return _pageControl;
}//分页控件的监听方法
-(void)pageChanged:(UIPageControl *)page
{//根据页数,调整滚动视图中得图片位置contentOffsetCGFloat x = page.currentPage * self.scrollView.bounds.size.width;[self.scrollView setContentOffset:CGPointMake(x, 0) animated:YES];
}- (void)viewDidLoad
{[super viewDidLoad];//设置图片for (int i = 0; i<kImageCount; i++) {NSString *imageName = [NSString stringWithFormat:@"img_%02d", i+1 ];UIImage *image = [UIImage imageNamed:imageName];UIImageView *imageView = [[UIImageView alloc] initWithFrame: self.scrollView.bounds];imageView.image = image;[self.scrollView addSubview:imageView];}//计算imageView的位置[self.scrollView.subviews enumerateObjectsUsingBlock:^(UIImageView *imageView, NSUInteger idx, BOOL *stop) {//调整x =》 origin =》frameCGRect frame = imageView.frame;frame.origin.x = idx * frame.size.width;imageView.frame = frame;}];//分页初始页数为0self.pageControl.currentPage = 0;//启动时钟[self startTimer];}/**启动时钟*/
-(void)startTimer
{self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];//添加运行循环[[NSRunLoop currentRunLoop]addTimer:self.timer forMode:NSRunLoopCommonModes];}-(void)updateTimer
{//页号发生变化//(当前页数 + 1) % 总页数int page = (self.pageControl.currentPage+1) % kImageCount;self.pageControl.currentPage = page;//调用监听方法。让滚动视图滚动[self pageChanged:self.pageControl];
}#pragma mark - scrollView的代理方法//滚动视图停下来
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{// 停下来的当前页数,通过contentOffset获取当前偏移量NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));//计算页数int page = scrollView.contentOffset.x/scrollView.bounds.size.width;self.pageControl.currentPage = page;}/**抓住图片时,停止时钟,松手后,开启时钟*/
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{//停止时钟,停止后就不能在使用,如果要启用时钟,需要重新实例化[self.timer invalidate];
}-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{//启动时钟[self startTimer];}
@end

实现思路

1.scrollView getter方法懒加载
指定了大小,添加到视图

2,viewDidLoad中添加图像,并计算位置

3,运行观察效果,修改scrollView的属性….

4,实例化UIPageControl

5,因为分页控件与滚动视图分离,因此监听滚动停止代理方法,修改分页控件的页数

6,将UIPageControl定义成属性,并且添加监听方法。

7,实现监听方法,页数变化后,修改scrollView的位置

8,添加时钟,调用分页控件的监听方法,实现图片自动轮播

ps:新建iOS交流学习群:304570962
可以加猫猫QQ:1764541256 或则微信znycat
让我们一起努力学习吧。
原文:http://blog.csdn.net/u013357243?viewmode=contents

这篇关于猫猫学IOS(十一)UI之图片自动轮播的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138366

相关文章

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、