一般我们设置 一个view的背景  可以通过  在view上放一个imageView 来显示背景图片

这里介绍另外一种方法

可以直接通过改变view.backgroundColor的值 来达到上面的效果

self.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageWithName:@"XXX"]];

这样就能达到上面  imageView的效果

但是用第二种方法在测试的时候  巨占内存   在ipad上显示一张 1024*768的图片  在模拟器器上查看内存  发现

第二中方法  占3.8mb   第一种只占用几十kb

用colorWithPatternImage设置view背景色太占内存,替代方法

之前的一个iPad项目,由于支持旋转,背景图又不一样,采用在旋转时使用下面代码设置背景色:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"main_landscape.jpg"]];
结果程序一启动就占很大内存,在第一代iPad上转几次就出现内存警告,退出。

今天打算优化一下,发现使用上面的代码占了6MB多内存!一旋转又多了6MB。。。
感觉是这个函数的问题,开始打算用UIImageView代替,可是旋转时,UIImageView的大小变动,会漏出底部的背景色。
最后google搜索,得到两种解决办法:
1.self.view = imageView;(如果支持触摸要加上imageView.userInteractionEnabled = YES;)
2. UImage *image = [UIImage imageNamed:@"name.png"];
     self.view.layer.contents = (id) image.CGImage;
我采用了第二个办法,哇,省了十多MB内存。

ps,由于我这里每次旋转都要设置,所以采用了imageNamed方法,如果仅调用一次,可以使用imageWithContentsOfFile

stretchableImageWithLeftCapWidth

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

(NSInteger)topCapHeight 这个函数是UIImage的一个实例函数,它的功能是创建一个内容可拉伸,而边角不拉伸的图片,需要两个参数,第一个是左边不拉伸区域的宽度,第二个参数是上面不拉伸的高度。

根据设置的宽度和高度,将接下来的一个像素进行左右扩展和上下拉伸。

注意:可拉伸的范围都是距离leftCapWidth后的1竖排像素,和距离topCapHeight后的1横排像素。

参数的意义是,如果参数指定10,5。那么,图片左边10个像素,上边5个像素。不会被拉伸,x坐标为11和一个像素会被横向复制,y坐标为6的一个像素会被纵向复制。

注意:只是对一个像素进行复制到一定宽度。而图像后面的剩余像素也不会被拉伸。

转载于:https://www.cnblogs.com/chengfang/p/4175586.html

colorWithPatternImage, stretchableImageWithLeftCapWidth相关推荐

  1. IOS高访微信聊天对话界面(sizeWithFont:constrainedToSize和stretchableImageWithLeftCapWidth的使用)

    大家好,百忙之中,抽出点空,写个微博,话说好久没写. 最近项目中有碰到写类似微信聊天界面上的效果,特整理了一下,写了一个小的Demo,希望给没头绪的同学们一个参考! Demo下载地址:http://d ...

  2. IOS类似9.png

    图形用户界面中的图形有两种实现方式,一种是用代码画出来,比如Quartz 2D技术,狠一点有OpenGL ES,另一种则是使用图片.  代码画的方式比较耗费程序员脑力,CPU或GPU; 图片则耗费磁盘 ...

  3. IOS 笔记大全 (UI控件到网络协议)

    1 MVC模式:(model+view+controller):是一种帮你把代码功能和显示划分出来的设计模式: 2 model:较为底层的数据引擎,负责管理实体中所继承的数据: 3 view:和用户交 ...

  4. iOS开发中那些容易被我们忽略的代码,常用代码集合

    退回输入键盘 - (BOOL) textFieldShouldReturn:(id)textField{ [textField resignFirstResponder]; } CGRect CGRe ...

  5. iphone开发技巧整合

    1.NSCalendar用法 -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initWi ...

  6. iPhone开发中的技巧整理

    1.NSCalendar用法  -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initW ...

  7. iPhone开发中的技巧整理(二)

    1.NSCalendar用法 -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initWi ...

  8. iOS 笔记 【经典】

    MVC模式:(model+view+controller):是一种帮你把代码功能和显示划分出来的设计模式: model:较为底层的数据引擎,负责管理实体中所继承的数据: view:和用户交互界面: c ...

  9. [IOS]iphone开发之常用代码:不断更新

    1,获取翻转事件,并开启翻转: 只要在viewcontroller的类中加入 -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOri ...

  10. ios开发之常用代码

    1,获取翻转事件,并开启翻转: 只要在viewcontroller的类中加入 -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOri ...

最新文章

  1. J2ME下漫游(追逐)AI的实现
  2. spring第一个小例子(Spring_xjs1)
  3. android 判断按钮是否已经有onclicklinstener,通过点击事件监听setOnClickListener彻底理解回调...
  4. input ios问题
  5. %hd %d %ld %u ......
  6. php radio样式美化,微信小程序修改radio组件默认样式
  7. 思科VPP 20.05 dpdk node源码分析
  8. [AHOI2006]Editor文本编辑器Splay Pascal
  9. 在幼儿园实施亲自然生态教育的思考
  10. Laravel 博客开发|生成站点地图
  11. 网络安全——D模块答题模式
  12. MATLAB-马尔可夫链(马氏链)模型
  13. 乔布斯的创新故事_创新工作的真实故事
  14. P5514 [MtOI2019]永夜的报应
  15. PW系列 | palette 体验
  16. 【3】计算机原理-显卡工作模型
  17. java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)
  18. torch.bmm()函数解读
  19. 大脑神经网络图高清,大脑神经网络图片
  20. 常用计算机 启动bios,各种不同品牌的电脑开机如何进BIOS界面

热门文章

  1. select标签multiple属性的使用方法
  2. windows server 2012无法安装NET.framework3.5解决方法
  3. maven项目添加新dependency jar后本地可正常运行,但打包后加载不上
  4. in与exist , not in与not exist 的区别
  5. VS2015 设置项目依赖项
  6. 每天一道剑指offer-丑数
  7. 指令 出厂_CNC数控加工中心编程指令详解
  8. python requests json_python:解析requests返回的response(json格式)
  9. python脚本根据cookies自动登录网站_为爬虫获取登录cookies:使用万能钥匙 Selenium 搞定一切登录...
  10. c语言二叉树层序遍历,二叉树二叉链表的层序遍历(C语言)