UIImage是iOS中层级比较高的一个用来加载和绘制图像的一个类,更底层的类还有 CGImage,以及iOS5.0以后新增加的CIImage。今天
b2b2c商城建设以及
o2o商城建设的技术人员主要聊一聊UIImage的三个属性: imageOrientation, size, scale,几个初始化的方法: imageNamed,imageWithContentsOfFile,以及绘制Image的几个draw开头的方法。
一、UIImage的size,scale属性
先想一个问题“一个图像的尺寸到底是多大呢?”
第一反应可能就是image.size,恭喜你答错了,正确的答案是图像的实际的尺寸(像 素)等于image.size乘以image.scale。如果做过界面贴图的话你可能经常会需要准备至少两套图,一套1倍图,一套图已@2x命名的二倍 图。这样当我们的程序运行在retina屏幕的时候系统就会自动的去加载@2x的图片,它的size将和一倍图加载进来的size相等,但是scale却 置为2,这点大家可以做个简单的小测试验证一下。然我们再深入一点儿为什么不直接加载到成二倍的尺寸呢,原因很简单因为我们在界面布局中逻辑坐标系中的 (单位是point),而实际的绘制都是在设备坐标系(单位是pixel)进行的,系统会自动帮我们完成从point到pixel之间的转化。其实这个比 例也就刚好和UIScreen中的scale对应,这样整条scale的线就可以串通了。
二、UIImage的几种初始化方法的对比
1、imageNamed:方法
imageNamed:是UIImage的一个类方法,它做的事情比我们看到的要稍微多一些。它的加载流程如下:
a. 系统回去检查系统缓存中是否存在该名字的图像,如果存在则直接返回。
b. 如果系统缓存中不存在该名字的图像,则会先加载到缓存中,在返回该对象。
观察上面的操作我们发现系统会缓存我们使用imageNamed:方法加载的图像时候,系统会自动帮我们缓存。这种机制适合于那种频繁用到界面贴图累的加载,但如果我们需要短时间内频繁的加载一些一次性的图像的话,最好不要使用这种方法。
2、imageWithContentsOfFile:和initWithContentsOfFile:方法
这两个方法跟前一个方法一样都是完成从文件加载图像的功能。但是不会经过系统缓存,直接从文件系统中加载并返回。
顺便提一下,当收到内存警告的时候,系统可能会将UIImage内部的存储图像的内存释放,下一次需要绘制的时候会重新去加载。
3、imageWithCGImage:scale:orientation:方法
该方面使用一个CGImageRef创建UIImage,在创建时还可以指定方法倍数以及旋转方向。当scale设置为1的时候,新创建的图像将和原图像尺寸一摸一样,而orientaion则可以指定新的图像的绘制方向。
分享到:
相关推荐
在iOS开发中,UIImage是苹果提供的一个核心类,用于处理和显示图像。这个"UIImage+Sprite for iOS"的源码库显然扩展了UIImage类,增加了精灵(Sprite)功能,这通常用于2D游戏或者需要高效处理多帧动画的场景。在iOS...
在iOS开发中,`UIImage`类是处理图片的核心组件,用于加载、显示和操作图片。在实际应用中,我们经常需要高效地加载图片以优化内存使用和应用性能。标题提到的"ios UIImage category 图片加载"是关于如何通过分类...
OpenGL ES是OpenGL的一个轻量级版本,主要用于嵌入式系统,包括移动设备如iOS设备。以下是这些源文件中涉及的关键知识点: 1. **OpenGL ES**: OpenGL ES (OpenGL for Embedded Systems) 是一个跨语言、跨平台的编程...
"IOS应用源码——分类.zip"这个压缩包很可能是包含了一个或多个iOS应用的源代码,特别关注了"分类"这一概念。分类(Category)是Objective-C的一个强大特性,它允许开发者扩展已有的类,增加新的方法,甚至有时候...
本知识点将深入探讨如何在iOS应用中通过OpenGL加载和绘制图像,主要关注"drawpixels"这个概念。 OpenGL是一个跨语言、跨平台的编程接口,用于生成2D和3D图像。在iOS上,我们通常使用OpenGL ES(OpenGL for Embedded...
在iOS开发中,UIImage是苹果提供的一个关键类,用于显示和处理图像。当你需要对图片进行颜色调整或添加遮罩效果时,可以利用UIKit框架中的各种方法和属性来实现。下面将详细介绍如何改变UIImage的颜色以及如何应用...
在iOS系统中,UIImage是处理图像的主要类,它提供了加载、显示和处理图像的功能。UIImage+Wechat是对UIImage类的扩展,添加了针对微信图片压缩算法的实现。微信作为全球广泛使用的社交应用,其图片压缩技术经过了...
这个名为“r3econ-UIImage-Sprite-Additions-0738b37.zip”的压缩包包含了一个针对iOS平台的游戏应用的源码,特别关注了UIImage类的扩展,以支持精灵(Sprite)功能。UIImage是苹果iOS SDK中的一个基础类,用于处理...
3. 用`UIImage`绘制背景:如果需要自定义背景,可以创建一个`UIImage`对象,然后设置`navigationBar.barTintColor`属性。 4. 动画效果:可以通过修改`navigationBar.translucent`属性和`shadowImage`来实现过渡动画...
"ios应用源码之通过opengl加载图像 drawpixels2"是一个示例项目,旨在教授如何在iOS应用中利用OpenGL ES加载并绘制图像。OpenGL ES是OpenGL的移动设备版本,特别为嵌入式系统如智能手机和平板电脑设计。 1. OpenGL ...
在iOS应用开发中,自定义导航栏(NavigationBar)是一个常见的需求,特别是在为不同版本的iOS提供兼容性时。此压缩包"IOS源码——ios适用于iOS 5、iOS 6和iOS 7的自定义NavigationBar.zip"包含了适用于这三个iOS版本的...
在iOS开发中,UIIMAGE是处理图像的核心类,它提供了许多功能,如加载、显示、裁剪和修改图像。在特定场景下,我们可能需要从一个UIImage对象中部分截取图片,例如创建可拉伸的按钮背景或者实现自定义的图片效果。...
在给定的资源"ios-UIImageView加载SVG格式的图片.zip"中,包含了一个名为"SVGProject"的示例项目,它可能是一个简单的iOS应用,演示了如何在UIImageView中加载并显示SVG图像。这个项目可以作为学习如何在iOS应用中...
这个"IOS应用源码——一个很简单的滤镜应用.zip"包含了构建这样一个应用所需的全部资源,让我们深入探讨一下其中涉及的关键知识点。 首先,iOS应用开发主要使用Objective-C或Swift语言。此源码可能基于这两种语言之...
在Xcode中新建一个Objective-C文件,选择Category模板,命名如"UIImage+Watermark.h"和"UIImage+Watermark.m"。在.h文件中声明你要添加的方法,例如: ```objc @interface UIImage (Watermark) - (UIImage *)...
在iOS应用开发中,尤其是在游戏或动画类应用中,精灵图(Sprite)技术是一种常见的优化资源加载和管理的方法。"UIImage+Sprite for iOS"这个项目就是针对这一技术的一个源码Demo,非常适合初学者或者在进行毕业设计...
在iOS开发中,录制视频流并将其转换为UIImage是一项常见的需求,这通常涉及到多媒体处理、图形编程以及实时渲染等技术。下面将详细讲解这个过程涉及的知识点。 首先,我们需要了解如何在iOS上进行实时视频录制。...
《iOS游戏应用源代码解析——以iosdeveloper-ImageCropper-04cef90为例》 在iOS开发领域,源代码是理解应用运行机制、学习编程技术和优化代码的关键。本篇文章将深入探讨“iosdeveloper-ImageCropper-04cef90”这个...
这个压缩包文件“IOS应用源码——一个简单的图片编辑器.zip”显然包含了开发iOS应用程序的源代码,特别是一个用于图片编辑的应用。这个应用可能提供了基本的图像处理功能,如裁剪、旋转、调整亮度和对比度等。让我们...
在本文中,我们将深入探讨iOS应用的源码开发,特别是针对"一个画板"这个项目的细节。这个项目可能是一个简单的绘图应用,允许用户在触摸屏上自由绘画,类似于儿童教育应用或者创意设计工具。iOS应用的源码是开发者用...