疯狂ios讲义疯狂连载之显示动画

简介:

UIImage专门用于显示各种位图该类支持表12.1所示的各种图片格式。

092215_NTIu_262659.jpg

当系统内存紧张时UIImage会将图片数据从UIImage对象中清理出去来以节省系统内存这里的清理行为只是清理UIImage内部存储的图片数据并不清理UIImage对象本身。当程序使用一个图片数据被清理过的UIImage对象时该UIImage将会自动从原始的图片文件中加载图片数据。


尽量避免使用UIImage加载过大如大于1024像素×1024像素的图片如果程序实在需要加载这种大图片可以考虑将该图片分解成多张小图片进行加载。

如果用UIImage来显示静止的图片UIImage提供了如下常用的类方法。

+ imageNamed:该方法用于加载指定文件名对应的图片。该方法有缓存机制如果该方法试图加载的文件不存在它才会去加载图片文件并缓存它如果系统已经缓存过指定的图片该方法将直接使用已缓存的图片。

当程序需要频繁地加载、卸载图片文件时不应该使用该方法来加载图片。

+ imageWithContentsOfFile:该方法用于加载指定文件名对应的图片。

+ imageWithData:该方法用于根据NSData中封装的图片数据来创建图片。

+ imageWithData:scale:该方法用于根据NSData中封装的图片数据来创建图片并按指定的缩放因子对图片进行缩放。

+ imageWithCGImage:该方法用于根据指定的CGImageRef对象来创建UIImage

+ imageWithCGImage:scale:orientation:该方法用于根据指定的CGImageRef对象来创建UIImage并将图片缩放到指定比例。该方法的最后一个参数指定对图片执行旋转、镜像等变换操作。

上面这些方法涉及一个CGImageRef这是处理位图的另一个API本节稍后会详细介绍。

通过上面介绍的这些方法UIImage可以加载不同数据源的图片包括加载应用程序资源包的图片、加载网络图片和手机本地图片。下面对UIImage需要读取的图片进行简单分类。

1. 从应用资源包读取图片

如果程序需要从应用资源包读取图片可借助UIImageimageNamed:方法进行读取例如如下代码

UIImage* image=[UIImage imageNamed:@"fkjava.png"];

2. 从网络读取图片

如果需要从网络读取图片可借助NSData的方法来加载指定URL对应的网络数据然后利用UImageimageWithData:方法来加载图片即可。例如如下代码

NSURL* url = [NSURL URLWithString:@"http://www.crazyit.org/logo.jpg"];

NSData* data = [NSData dataWithContentsOfURL:url]

UIImage* image = [UIImage imageWithData:data];

3. 从手机本地读取图片

如果需要读取手机本地的图片只要先获取图片路径再利用UIImageimageWithContentsOfFile:方法加载图片即可。例如如下代码

NSString *path = [[NSHomeDirectory()

stringByAppendingPathComponent:@"Documents"]

stringByAppendingPathComponent:@"fkjava.png"];

UIImage *image = [UIImage imageWithContentsOfFile:path];

除此之外UIImage还可以加载多张图片并按指定时间间隔依次显示多张图片这就可以非常方便地实现动画效果。UImage提供了如下方法来加载多张图片实现动画。

+ animatedImageNamed:duration:根据指定的图片名来加载系列图片。例如调用该方法时的第一个参数名为butterfly该方法将会自动加载butterfly0.pngbutterfly1.pngbutterfly2.png等图片。

+ animatedImageWithImages:duration:该方法需要传入一个NSArray作为多张动画图片。该NSArray中的每个元素都是UIImage对象。

实例蝴蝶飞舞

下面的实例使用UIImage加载多张图片来显示蝴蝶挥舞翅膀的动画再用一个UIImageView控件来显示该图片接下来使用定时器不断地改变UIImageView位置即可完成该实例。

创建一个Single View Application本实例直接使用代码来创建UIImageViewUIImage因此不需要修界面设计文件。下面是该实例控制器类的实现部分的代码。

程序清单codes/12/12.1/ImageTest/ImageTest/FKViewController.m

wKiom1LnDASzeX9XAAR5PIzJ83E012.jpg

上面程序中的粗体字代码使用UImage加载多张图片并控制以动画形式播放多张图片接下来创建了一个NSTimer定时器该定时器控制周期性地改变UIImageView的位置这样即可实现本例的动画。

编译、运行该程序即可看到如图12.1所示的效果。

092346_FBzA_262659.jpg

12.1 蝴蝶飞舞实例


————本文节选自《疯狂ios讲义上》

092423_Txt9_262659.jpg

 

本文转自 fkJava李刚 51CTO博客,原文链接:http://blog.51cto.com/javaligang/1355167 ,如需转载请自行联系原作者

相关文章
|
iOS开发
iOS 动画绘制圆形
iOS 动画绘制圆形
103 1
|
编译器 iOS开发 异构计算
读iOS核心动画笔记
读iOS核心动画笔记
72 0
|
4月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
98 1
|
5月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
83 5
|
6月前
|
Swift iOS开发 UED
揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【9月更文挑战第5天】本文通过具体案例介绍如何在iOS应用中使用Swift与UIKit实现自定义按钮动画,当用户点击按钮时,按钮将从圆形变为椭圆形并从蓝色渐变到绿色,释放后恢复原状。文中详细展示了代码实现过程及动画平滑过渡的技巧,帮助读者提升应用的视觉体验与特色。
91 11
|
7月前
|
Swift iOS开发 UED
【绝妙创意】颠覆你的视觉体验!揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【8月更文挑战第13天】本文通过一个具体案例,介绍如何使用Swift与UIKit在iOS应用中创建独特的按钮动画效果。当按钮被按下时,其形状从圆形变化为椭圆形,颜色则从蓝色渐变为绿色;释放后,动画反向恢复原状。利用UIView动画方法及弹簧动画效果,实现了平滑自然的过渡。通过调整参数,开发者可以进一步优化动画体验,增强应用的互动性和视觉吸引力。
77 7
|
iOS开发
iOS 常用阅读软件打开书籍的转场动画
iOS 常用阅读软件打开书籍的转场动画
118 0
|
10月前
|
iOS开发
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
157 0
|
API iOS开发
iOS 自定义转场动画 UIViewControllerTransitioning
iOS 自定义转场动画 UIViewControllerTransitioning
146 0
|
iOS开发
iOS - 个人中心果冻弹性下拉动画
iOS - 个人中心果冻弹性下拉动画
282 0
iOS - 个人中心果冻弹性下拉动画

热门文章

最新文章

  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 2
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 3
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 4
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 6
    iOS各个证书生成细节
  • 7
    iOS|记一名 iOS 开发新手的前两次 App 审核经历
  • 8
    iOS开发-UIScrollView原理
  • 9
    iOS - Swift NSPoint 位置
  • 10
    iOS:应用程序的线程安全性