当前位置: 首页 > news >正文

封装了一个简单理解的iOS竖直文字轮播

效果图

请添加图片描述

原理

就是持有两个视图,并且两个视图同时改变origin.y
动画结束之后,判断哪个视图是在上面并且看不到的,
则将该视图移动到底部,并且该视图展示下一跳内容
在开始下一轮动画

代码

- (void)startAnimationWithDuration:(CGFloat)duration
{self.duration = duration;[self changeAnimation];
}- (void)changeAnimation
{CGRect rect1 = self.label1.frame;CGPoint point1 = rect1.origin;point1.y -= CGRectGetHeight(self.bounds);rect1.origin = point1;CGRect rect2 = self.label2.frame;CGPoint point2 = rect2.origin;point2.y -= CGRectGetHeight(self.bounds);rect2.origin = point2;self.currentIndex = (self.currentIndex + 1)%self.titleArray.count;NSString *crrentTitle = self.titleArray[self.currentIndex];[UIView animateWithDuration:0.5 animations:^{self.label1.frame = rect1;self.label2.frame = rect2;} completion:^(BOOL finished) {if (CGRectGetMinY(self.label1.frame) < - CGRectGetHeight(self.bounds) / 2) {self.label1.frame = self.bottomRect;self.label1.text = crrentTitle;} else {self.label2.frame = self.bottomRect;self.label2.text = crrentTitle;}}];[self performSelector:@selector(changeAnimation) withObject:nil afterDelay:3.5];
}

demo
如果对你有帮助,请给一个star

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
  • Wireshark TS | 应用传输丢包问题
  • No ‘ChromeSansMM’ font 错误解决
  • 渗透测试之内核安全系列课程:Rootkit技术初探(一)
  • vue面试题2-根据以下问题回答
  • ChatGP和kimi对比
  • Docker之路(三)docker安装nginx实现对springboot项目的负载均衡
  • Java 程序结构 -- Java 语言的变量、方法、运算符与注释
  • Apache Spark
  • 解释一下I/O多路复用模型?
  • 单元测试覆盖率
  • 如何提高网站访问量?
  • Kafka 详解:全面解析分布式流处理平台
  • 单臂路由的配置(思科、华为)
  • linux中xterm窗口怎么调整字体大小
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • golang 发送GET和POST示例
  • httpie使用详解
  • JAVA 学习IO流
  • JavaScript实现分页效果
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • sessionStorage和localStorage
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • vue脚手架vue-cli
  • 阿里云购买磁盘后挂载
  • 从重复到重用
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 面试总结JavaScript篇
  • 突破自己的技术思维
  • 做一名精致的JavaScripter 01:JavaScript简介
  • Hibernate主键生成策略及选择
  • Python 之网络式编程
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​补​充​经​纬​恒​润​一​面​
  • #QT(智能家居界面-界面切换)
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (C++20) consteval立即函数
  • (day6) 319. 灯泡开关
  • (二)构建dubbo分布式平台-平台功能导图
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一)基于IDEA的JAVA基础1
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .NET CF命令行调试器MDbg入门(一)
  • .NET Micro Framework初体验
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .Net 知识杂记
  • .net6使用Sejil可视化日志
  • .Net8 Blazor 尝鲜
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)