在iOS开发中,经常会遇到控件尺寸和图片大小不匹配的情况. 一些情况下, 我们需要对图片进行拉伸, 以满足美观需求.

总的来说, 图片的拉伸方式可以分为两种, 一种是通过Xcode自带的Show Slicing功能, 一种是通过代码进行拉伸.

首先, 介绍Xcode自带的Show Slicing 功能.

1. 如下图所示的图片, 如果不进行拉伸, 直接设置给一个长度比较长的button以后,其运行效果如图所示.

2. 用Show Slicing 进行拉伸.

1)选中Assets中的图片,右下角有一个Show Slicing ,如图所示.

2)点击Show Slicing 以后, 会显示如下界面, 点击图中的Start Slicing

3)拖动虚线,调整拉伸区域, 虚线内的白色区域会被拉伸, 注意要保留住四周的圆角,选择好拉伸区域以后, 点击右下角的Show Overview,就会保存拉伸后的效果了.

4)这个时候,在给button设置这张背景图片,运行效果如图,这样就比原先美观多了.

5)当给UIImageView设置尺寸大小不匹配的背景图片时,还可以通过Stretching 功能,当设置了Image以后, 在Stretching的四个参数中,填入0-1的数值, 调整拉伸效果.

3. 用代码进行拉伸

1)第一种拉伸方法

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight __TVOS_PROHIBITED;

使用示例:

UIImage *image = [UIImage imageNamed:@"RedButton"];

image = [image stretchableImageWithLeftCapWidth:image.size.width * 0.5 topCapHeight:image.size.height * 0.5];

[self.loginButton setBackgroundImage:image forState:UIControlStateNormal];

使用效果:

2)第二种拉伸方法

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets NS_AVAILABLE_IOS(5_0); // create a resizable version of this image. the interior is tiled when drawn.

使用示例:

UIImage *image = [UIImage imageNamed:@"RedButton"];

image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(image.size.height * 0.5, image.size.width * 0.5, image.size.height * 0.5, image.size.width * 0.5)];

[self.loginButton setBackgroundImage:image forState:UIControlStateNormal];

使用效果:

4.在我们经常使用的微信, QQ中,聊天内容会有一个类似于气泡的背景图,如图所示

有的时候,一次回复了几百个字, 这个图片就会根据内容的多少进行拉伸,要实现这种效果就可以使用代码拉伸的方式.

iOS开发中拉伸图片的几种方式相关推荐

  1. IOS开发中@2x图片等适应不同分辨率手机

    开发中,例如: Love.image=[UIImage imageNamed:@"index_pic.png"]; 在项目中还保存有index_pic@2x.png的图片,此图为了 ...

  2. iOS关于加载图片的几种方式选择

    最近在开发过程中遇到一些性能优化的东西,这次来说说关于图片加载的性能优化和选择. 大家都知道创建UIImage常用以下几种方式 + (nullable UIImage *)imageNamed:(NS ...

  3. iOS无限轮播图片的两种方式

    2019独角兽企业重金招聘Python工程师标准>>> 1 使用UIScrollview实现无限轮播原理 在开发中常需要对广告或者是一些图片进行自动的轮播,也就是所谓的无限滚动. 在 ...

  4. IOS开发中发送Email的两种方法

    IOS系统框架提供的两种发送Email的方法:openURL 和 MFMailComposeViewController.借助这两个方法,我们可以轻松的在应用里加入如用户反馈这类需要发送邮件的功能. ...

  5. IOS iPhone开发中发送e-mail的3种方式

    iOS系统框架提供的两种发送Email的方法1.使用openURL来实现发邮件的功能:NSString *url = [NSString stringWithString: @"mailto ...

  6. iOS加载Gif图片的N种方式

    1.系统UIImageView 多张图片组成动画 /** * UIImageView 动画 * Memory-23M */ -(void)gifPlay1 { // NSArray *array=@[ ...

  7. python导入图片数据_Python中读取图片的6种方式

    Python进行图片处理,第一步就是读取图片,这里给大家整理了6种图片的读取方式,并将读取的图片装换成numpy.ndarray()格式.首先需要准备一张照片,假如你有女朋友的话,可以用女朋友的,没有 ...

  8. 【Python基础】Python中读取图片的6种方式

    Python进行图片处理,第一步就是读取图片,这里给大家整理了6种图片的读取方式,并将读取的图片装换成numpy.ndarray()格式.首先需要准备一张照片,假如你有女朋友的话,可以用女朋友的,没有 ...

  9. python中读取图片的6种方式

    作者:小伍哥 来源:AI入门学习 python进行图片处理,第一步就是读取图片,这里给大家整理了6种图片的读取方式,并将读取的图片装换成numpy.ndarray()格式. 首先需要准备一张照片,假如 ...

最新文章

  1. linux硬盘保护卡,在学校机房联想硬盘保护下安装Linux,并配置锐捷客户端
  2. 常量(const)与只读(readonly)字段
  3. 浙大机器鱼登Nature封面!22cm身段,探索地球最深海沟
  4. 探讨由于死锁或进程阻塞造成的ASP突然不能访问的问题
  5. Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
  6. Linux中crontab无法执行java程序的问题
  7. 为什么苹果有2500亿美刀不用,偏偏要借钱?
  8. electronjs MySQL,javascript – 在Electron应用程序中使用sql.js.
  9. Visual Studio的Web Performance Test提取规则详解(1)
  10. 音视频技术傻瓜版解析:带你解锁RTMP
  11. java jmx 监控tomcat_jmx监控之Tomcat
  12. JQuery autocomplete使用手册
  13. html5抽奖转盘生成器
  14. cad放大_最新CAD软件插件大全+上千款字体,内附使用教程,只分享3天
  15. Arduino 电机测速
  16. 最新【2021.1.28】今日头条_signature 分析
  17. IT人才外包服务的好处?
  18. mysql左链sql去重_MySql去重
  19. PredRNN++:网络结构和代码解读
  20. 利用ODI将Oracle US7ASCII编码的数据库迁移至UTF8编码数据库

热门文章

  1. python中PyGame的下载与安装
  2. 操作系统 实验三:线程的互斥
  3. Java CsvReader 读取csv文件
  4. 信息技术重返MBA课程
  5. linux中修改某行某列字符串,Linux替换指定列的字符串(awk 命令)
  6. Python进程池Pool的使用
  7. android 电池容量修改,Android 使用adb查看和修改电池信息
  8. android之broadcastreceiver 耳机按键,Android 实时监听耳机按钮事件
  9. 顺应EMM趋势,烽火星空重磅出击
  10. spring配置详解