猫猫学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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

Prompt - 将图片的表格转换成Markdown

Prompt - 将图片的表格转换成Markdown 0. 引言1. 提示词2. 原始版本 0. 引言 最近尝试将图片中的表格转换成Markdown格式,需要不断条件和优化提示词。记录一下调整好的提示词,以后在继续优化迭代。 1. 提示词 英文版本: You are an AI assistant tasked with extracting the content of

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD