博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
更改UIView的背景
阅读量:5913 次
发布时间:2019-06-19

本文共 1237 字,大约阅读时间需要 4 分钟。

hot3.png

本文转自""的cnblogs,原文地址:

本文分析对比了各种更改UIView背景的方法。当然,背景是根据一个图片来的(非纯色)。

一.加一个uiimageview在uiview上面

UIImageView* imageView = [[UIImageView alloc] initWithFrame:view.bounds];   imageView.image = [[UIImage imageNamed:@"name.png"] stretchableImageWithLeftCapWidth:left topCapHeight:top];   [view addSubview:imageView];

这种方式,如果原始图片大小不够(小于view的大小),可以拉伸,在view释放后也没有什么内存保留。

二.通过图片来生成UIColor设置view的backgroundColor

1.imageNamed方式

view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"name.png"]];

2.contentOfFile方式

NSString* path = [[NSBundle mainBundle] pathForResource:@"name" ofType:@"png"];view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:path];

这两种方式都会在生成color时占用大量的内存(原始图片的n倍,这个n可能会达到几千的程度)。而且如果图片大小不够,就会按照原始大小一个一个u画过去,也就是不会自动拉伸。1和2的区别在于,view释放后,1中的color并不会跟着释放,而是一直存在于内存中(当然,再次根据这个图片生成color时并不会再次申请内存了),而2中的color就会随着view的释放而释放。

三.quartzCore方式

 

NSString* path = [[NSBundle mainBundle] pathForResource:@"name" ofType:@"png"];UIImage *image = [UIImage imageWithContentsOfFile:path];view.layer.contents = (id) image.CGImage;// 如果需要背景透明加上下面这句view.layer.backgroundColor = [UIColor clearColor].CGColor;

 

这种方式会自动拉伸图片,而且没有额外内存占用。

综上,推荐第三种方式来根据图片设置背景色。

转载于:https://my.oschina.net/lavzchen/blog/420083

你可能感兴趣的文章
SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解
查看>>
Chrome应用技巧之颜色拾取
查看>>
Linux之通配符
查看>>
ios中摄像头和图片调用
查看>>
Content Provider 基础 之URI
查看>>
管理表空间和数据文件——使用OMF方式管理表空间
查看>>
ios获取安装的app
查看>>
Visual Studio 2012出现“无法访问T-SQL组件和安装了不兼容伯 DacFx版本”的解决办法...
查看>>
第一个版本
查看>>
JSTL I18N 格式标签库 使用之二_____读取消息资源
查看>>
九、Null在Java中的精确表示
查看>>
php 连接 mssql sql2008
查看>>
所谓技术团队绩效
查看>>
读书笔记-深入理解JVM虚拟机-1.OOM初探
查看>>
Yii CDbCriteria 常用方法
查看>>
libgc 加 .make 在 vc6 vs2008 中的编译方法
查看>>
用条件变量实现事件等待器的正确与错误做法
查看>>
软件度量都该度个啥?(5)——被吹得最多的六西格玛
查看>>
Maven教程初级篇02:pom.xml配置初步
查看>>
JavaScript基础系列--打败this
查看>>