热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入解析UIImageView与UIImage的关键细节与应用技巧

本文深入探讨了UIImageView和UIImage的核心特性及应用技巧。首先,详细介绍了如何在UIImageView中实现动画效果,包括创建和配置UIImageView实例的具体步骤。此外,还探讨了UIImage的加载方式及其对性能的影响,提供了优化图像显示和内存管理的有效方法。通过实例代码和实际应用场景,帮助开发者更好地理解和掌握这两个重要类的使用技巧。

1、设置动画

 1 // 1)添加imageView
 2 UIImageView *imageView = [[UIImageView alloc]
 3 initWithFrame:self.bounds];
 4 // 2)动画照片数组
 5 NSMutableArray*arrM = [NSMutableArrayarray];
 6 for (inti = 1; i <9;i++) {
 7 UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%d",i]];
 8 [arrM addObject:image]; 
 9 }
10 // 3)给照片数组赋给imageView的动画数组
11 imageView.animatiOnImages= arrM;
12 // 4)设置动画播放属性
13 imageView.animatiOnRepeatCount=1;
14 imageView.animatiOnDuration=0.5;
15 // 5)开始动画
16 [imageView startAnimating];
17 [self addSubview:imageView];

 

 2、将图片按原始尺寸添加到ImageView上
(1)storyboard或xib中实现:
在imageView的Mode属性中设置center;

(2)在图片中实现:
1】

2】

3】在render As中选择Original Image即可


(3)代码实现:

 1 // 调用UIImage的对象方法---设置UIImageRenderingMode参数为:UIImageRenderingModeAlwaysOriginal
 2 - (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode;
 3 
 4 // 示例:如果一个项目中多处用到以上方法:即将图片按原尺寸添加,可以给UIImage添加一个分类:
 5 
 6 // 1】.h文件
 7 @interface UIImage (Image)
 8 // 快速的返回一个最原始的图片
 9 + (instancetype)imageWithOriRenderingImage:(NSString *)imageName;
10 @end
11 
12 // 2】.m文件
13 #import 
14 #import "UIImage+Image.h"
15 @implementation UIImage (Image)
16 + (instancetype)imageWithOriRenderingImage:(NSString *)imageName
17 {
18 UIImage *image = [UIImage imageNamed:imageName];
19 // UIImageRenderingModeAlwaysOriginal--保持原始图片模式
20 return[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
21 }
22 
23 @end

 


 3、将小图片拉伸填充ImageView---并保证拉伸后的像素与之前一样
(1)图片中实现:
1】

2】

3】在Slices中选择Horizontal and Vertical即可

(2)代码实现:

 1 // 调用UIImage的对象方法---设置UIImageRenderingMode参数为:UIImageRenderingModeAlwaysOriginal
 2 - (UIImage *)stretchableImageWithLeftCapWidth: topCapHeight: ;
 3 
 4 // 示例:如果一个项目中多处用到以上方法:即将图片图片拉伸添加,可以给UIImage添加一个分类:
 5 // .h 文件
 6 #import 
 7 @interface UIImage (ICKImage)
 8 
 9 + (UIImage *)imageWithStretchableImageName:(NSString *)imageName;
10 
11 @end
12 
13 // .m 文件
14 + (UIImage *)imageWithStretchableImageName:(NSString *)imageName
15 {
16 UIImage *image = [UIImage imageNamed:imageName];
17 /*
18 * LeftCapWidth:图片水平拉伸的点,设为0.5,即是从水平中点拉伸
19 * topCapHeight:图片竖直拉伸的点,设为0.5,即是从竖直中点拉伸
20 */
21 return[image stretchableImageWithLeftCapWidth:0.5topCapHeight:0.5];
22 }

 

 

4、将矩形图片截成圆角图片:图层方法和绘画方法
(1) 利用图层实现:

1 // 设置头像圆角半径
2 self.titleImage.layer.cornerRadius =self.titleImage.frame.size.width*0.5;
3 //切除圆角以外部分
4 self.titleImage.layer.masksToBounds= YES;
5 //设置圆角边缘宽度(如果不需要边缘,可省略)
6 self.titleImage.layer.borderWidth= 8;
7 //设置边框颜色
8 self.titleImage.layer.borderColor= [UIColorcolorWithRed:36/225.0green:36/225.0blue:36/225.0alpha:1].CGColor;

 

(2)利用绘画实现

// 给image添加一个圆角图片方法
-(UIImage*)circleImage
{
// 开启图片上下文
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0);
// 获取图片上下文
CGCOntextRefctx= UIGraphicsGetCurrentContext();
// 给上下文添加一个圆
CGRect circle =CGRectMake(0,0, self.size.width,self.size.height);
CGContextAddEllipseInRect(ctx, circle);
// 剪切图片上下文
CGContextClip(ctx);
// 将图片画至剪切的上下文
[self drawInRect:circle];
// 从上下文获取图片
UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
// 关闭上下文
UIGraphicsEndImageContext();
return image;
}

**特别提醒:**
*虽然图层比绘画实现起来简单,但是通过图层设置时,系统内部会进行一系列的底层操作,从而会导致内部运行不流畅,尤其是多个控件的图片通过图层设置成圆角图片。
建议:
1、涉及较少量的图片进行圆角图片设置时,可运用图层设置;
2、如果是很多图片进行圆角图片设置时,最好使用绘画,不会太消耗内部资源。*


推荐阅读
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • 如何使用 net.sf.extjwnl.data.Word 类及其代码示例详解 ... [详细]
  • 优化后的标题:数据网格视图(DataGridView)在应用程序中的高效应用与优化策略
    在应用程序中,数据网格视图(DataGridView)的高效应用与优化策略至关重要。本文探讨了多种优化方法,包括但不限于:1)通过合理的数据绑定提升性能;2)利用虚拟模式处理大量数据,减少内存占用;3)在格式化单元格内容时,推荐使用CellParsing事件,以确保数据的准确性和一致性。此外,还介绍了如何通过自定义列类型和优化渲染过程,进一步提升用户体验和系统响应速度。 ... [详细]
  • 本文介绍了Android动画的基本概念及其主要类型。Android动画主要包括三种形式:视图动画(也称为补间动画或Tween动画),主要通过改变视图的属性来实现动态效果;帧动画,通过顺序播放一系列预定义的图像来模拟动画效果;以及属性动画,通过对对象的属性进行平滑过渡来创建更加复杂的动画效果。每种类型的动画都有其独特的应用场景和实现方式,开发者可以根据具体需求选择合适的动画类型。 ... [详细]
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • 在运行时动态获取Entity Framework中的ObjectSet可以通过反射机制实现。这种方法允许开发者在应用程序运行期间根据需要加载不同的实体集合,从而提高代码的灵活性和可扩展性。通过使用`DbContext`类的`Set`方法,结合类型信息,可以轻松地实现这一目标。此外,还可以利用`Type`对象和泛型方法来进一步增强动态性,确保在处理多种实体类型时更加高效和安全。 ... [详细]
  • 从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南
    从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南 ... [详细]
  • 期末Web开发综合实践项目:运用前端技术打造趣味小游戏体验
    期末Web开发综合实践项目中,学生通过运用HTML、CSS和JavaScript等前端技术,设计并实现了一款趣味性十足的小游戏。该项目不仅检验了学生对前端基础知识的掌握情况,还提升了他们的实际操作能力和创意设计水平。视频链接展示了项目的最终成果,直观呈现了游戏的互动性和视觉效果。 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
  • Android 图像色彩处理技术详解
    本文详细探讨了 Android 平台上的图像色彩处理技术,重点介绍了如何通过模仿美图秀秀的交互方式,利用 SeekBar 实现对图片颜色的精细调整。文章展示了具体的布局设计和代码实现,帮助开发者更好地理解和应用图像处理技术。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • 深入解析:使用C++实现Python字节数组(struct)的高效处理方法 ... [详细]
  • JavaScript最初并非设计为纯粹的面向对象编程(OOP)语言,因为直到ES5标准中仍未引入类的概念。然而,随着ES6的发布,JavaScript正式引入了类的语法,使得开发者能够更加直观地实现继承机制。本文将深入探讨JavaScript中多样的继承实现方法,包括原型链、寄生组合式继承等技术,并分析它们的优缺点及适用场景。 ... [详细]
author-avatar
春_来_茶_馆5
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有