一、UIImage初始化方法推荐(不吃内存)
四、是偷学,通知和多线程玩好了,写程序好顺!加油!
直接用Imagenamed方法初始化会比上面方法吃内存,因为在苹果的官方文档中对于Imagenamed方法中描述这种方法会在系统缓存中根据指定的名字寻找图片,如果找到了就返回。如果没有在缓存中找到图片,该方法会从指定的文件中加载图片数据,并将其缓存起来,然后再把结果返回,而imageWithContentsOfFile方法只是简单的加载图片,并不会将图片缓存起来。
如果加载一张很大的图片,并且只使用一次,那么就不需要缓存这个图片。这种情况imageWithContentsOfFile比较合适——系统不会浪费内存来缓存图片。
然而,如果在程序中经常需要重用的图片,那么最好是选择imageNamed方法。这种方法可以节省出每次都从磁盘加载图片的时间。
<pre name="code" class="objc">NSString *path = [[NSBundle mainBundle]pathForResource:@"iphone_level01_cover" ofType:@"png"];
image=[UIImage imageWithContentsOfFile:path];
二、在添加点击TableViewCell的背景颜色的时候
UIColor *color = [UIColor colorWithRed:84/255.0f green:189/255.0f blue:255/255.0f alpha:1.0f];
cell.booktitle.textColor = color;
cell.booktitle.highlightedTextColor = [UIColor whiteColor];
cell.selectedBackgroundView = [[[UIView alloc]initWithFrame:cell.frame] autorelease];
cell.selectedBackgroundView.backgroundColor = color;
return cell;
在cellForRowAtIndexPath方法最后更改,能够及时显示·····具体要看TableViewDatasource的方法执行顺序,理解逻辑
主要是Hignligtcolor,这些属性是自带的,可以直接在cell初始化的时候设定,didselect方法触发的时候,已经提前设置好了,所以不需要在didselect方法里去更改
三、UIcollectionView的点击更改背景跟上述TableView一个原理
只需要在初始化的时候加上这段就可以了
只是不需要初始化selectedBackgroundView(不造为撒子,我估计TableView也可以不加,但是没试过)
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
cell.BackgroundView = imageView;
UIImageView *selectImageView = [[UIImageView alloc] initWithImage:selectImage];
cell.selectedBackgroundView = selectImageView;
四、是偷学,通知和多线程玩好了,写程序好顺!加油!