iOS 图片拉伸处理

2024-06-09 01:38
文章标签 图片 处理 ios 拉伸

本文主要是介绍iOS 图片拉伸处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片的Resize处理

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets 可以使用此方法生成一个新的图片,其参数 capInsets 是个结构体,可用 UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right) 定义,由 top,left,bottom,right 参数定义的区域在拉伸时会保持不变,其中 top、left、bottom、right 的单位都是 point ,以实例说明该方法的使用吧。

实例1,从下图左边的原图,水平拉伸想得到右边的图片:

保持图片左边(包括下三角处)在图片的水平拉伸处理中保持原样不变,通过代码设置如下:

UIImage *img = [UIImage imageNamed:@"popup"];
img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 55) resizingMode:UIImageResizingModeStretch];
self.resizableImgView.image = img;

其中 CapInsets 的 left 值为 13 point,right 值为 55 point,这个值的确定需要根据具体图片其保持不变的区域来确定,目前,也可以通过 Xcode xcassets 的 Slicing 功能完成,如下图所示:


其中红色框 Slices 处可以控制该图片是水平拉伸(Horizontal),垂直拉伸(Vertical)或者水平垂直方向同时(Horizontal and Vertical)拉伸, 其值 Left 26,Right 110 单位是 pixels,我们通过API  resizableImageWithCapInsets  设置时,需要联合红色框 Scale 处的值转换为单位为 point 的值,红色框 Center 处的值控制图片变换的方式,这里 Stretches 表示将 width 为 4 pixels 的图片区域进行拉伸,还有另一种方式 Tiles,表示将设置的区域进行平铺,这种方式稍后以实例2来说明。红色框 Slices 和 Center 处的数值可以直接改变输入框中的数值改变,也可以拖动左侧图片中的竖直虚线设置,可以自己试试。

实例2,从下图左边的原图,将图片指定区域平铺想得到右边的图片:

图片 Tiles

将图片中五角星的图样进行平铺,通过代码设置如下:

UIImage *img = [UIImage imageNamed:@"about"];
img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(0, 11.5, 0, 11) resizingMode:UIImageResizingModeTile];
self.resizableImgView.image = img;

请注意,这里 resizingMode 的值设置成 UIImageResizingModeTile ,表示图片的处理方式。由于这里只是水平平铺,所以其 top 和 bottom 都是 0,left 和 right 的值都是根据需要平铺的区域来设定。同样,这也可以通过 Xcode xcassets 的 Slices 来完成。如下图所示: 

Xcode 中使用 Slicing 功能平铺处理图片

从上述可以看出,善于 Xcode 可以减少代码量,以更快完成开发任务。


参考文章:    http://liumh.com/2015/10/21/ios-image-related-matching/

这篇关于iOS 图片拉伸处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043896

相关文章

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea

Python结合requests和Cheerio处理网页内容的操作步骤

《Python结合requests和Cheerio处理网页内容的操作步骤》Python因其简洁明了的语法和强大的库支持,成为了编写爬虫程序的首选语言之一,requests库是Python中用于发送HT... 目录一、前言二、环境搭建三、requests库的基本使用四、Cheerio库的基本使用五、结合req

使用Python处理CSV和Excel文件的操作方法

《使用Python处理CSV和Excel文件的操作方法》在数据分析、自动化和日常开发中,CSV和Excel文件是非常常见的数据存储格式,ython提供了强大的工具来读取、编辑和保存这两种文件,满足从基... 目录1. CSV 文件概述和处理方法1.1 CSV 文件格式的基本介绍1.2 使用 python 内

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

SpringBoot操作spark处理hdfs文件的操作方法

《SpringBoot操作spark处理hdfs文件的操作方法》本文介绍了如何使用SpringBoot操作Spark处理HDFS文件,包括导入依赖、配置Spark信息、编写Controller和Ser... 目录SpringBoot操作spark处理hdfs文件1、导入依赖2、配置spark信息3、cont

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与