本文分析对比了各种更改UIView背景的方法。当然,背景是根据一个图片来的(非纯色)。
一.加一个uip_w_picpathview在uiview上面
UIImageView* p_w_picpathView = [[UIImageView alloc] initWithFrame:view.bounds]; p_w_picpathView.p_w_picpath = [[UIImage p_w_picpathNamed:@"name.png"] stretchableImageWithLeftCapWidth:left topCapHeight:top]; [view addSubview:p_w_picpathView];
这种方式,如果原始图片大小不够(小于view的大小),可以拉伸,在view释放后也没有什么内存保留。
二.通过图片来生成UIColor设置view的backgroundColor
1.p_w_picpathNamed方式
view.backgroundColor = [UIColor colorWithPatternImage:[UIImage p_w_picpathNamed:@"name.png"]];
2.contentOfFile方式
NSString* path = [[NSBundle mainBundle] pathForResource:@"name" ofType:@"png"]; view.backgroundColor = [UIColor colorWithPatternImage:[UIImage p_w_picpathWithContentsOfFile:path];
这两种方式都会在生成color时占用大量的内存(原始图片的n倍,这个n可能会达到几千的程度)。而且如果图片大小不够,就会按照原始大小一个一个u画过去,也就是不会自动拉伸。1和2的区别在于,view释放后,1中的color并不会跟着释放,而是一直存在于内存中(当然,再次根据这个图片生成color时并不会再次申请内存了),而2中的color就会随着view的释放而释放。
三.quartzCore方式
UIImage *p_w_picpath = [UIImage p_w_picpathNamed:@"name.png"]; view.layer.contents = (id) p_w_picpath.CGImage; // 如果需要背景透明加上下面这句 view.layer.backgroundColor = [UIColor clearColor].CGColor;
这种方式会自动拉伸图片,而且没有额外内存占用。
综上,推荐第三种方式来根据图片设置背景色。
更改UIView的背景
精选 转载下一篇:签名ipa,让其它手机也安装
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
有趣的css - 动态的毛玻璃背景
用css实现一个小清新的动态毛玻璃背景效果。
css 动效 动态毛玻璃背景 ui ux -
有趣的css - 背景收缩动画按钮
借助 css transition 属性绘制出一个背景收缩交互的一个按钮。
css ux/ui 交互设计 动效设计 动画按钮 -
UIView设置背景图片的方法
项目中,可能需要我们为某个视图设置背景图片,而API中UIView没有设置
控件 ios开发 uiview 背景图片 背景颜色 -
ios uiview添加背景 uiview的绘制过程
当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序1、 alloc 创建对象,分配空间 2、init (initWithNibName) 初始化对象,
ios uiview添加背景 UIViewController的方法 UIViewController的生命周 UIViewController 初始化