Tne*_*ppa 3 cocoa-touch ios xcode4
我在项目的同一目录中有一个带复选标记的图像作为.png,名为"checkbox.png".我想用该图像作为背景创建一个UIImageView,并将其设置为一组UITableViewCells的附件视图.我目前有:
UIView * v = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkmark.png"]];
v.backgroundColor = [UIColor redColor];
cell.accessoryView = v;
[v autorelease];
Run Code Online (Sandbox Code Playgroud)
哪个不行.我可以制作另一个虚拟UIView(例如
v = [[UIView alloc] init];
v.backgroundColor = [UIColor redColor];
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,它在我的uitableviewcells的右侧显示一个小红框.我不确定为什么带有复选框的视图不起作用.我指定文件路径的方式有问题吗?
imageWithContentsOfFile:
需要文件的路径.如果您只是给它一个文件名,它将在当前目录中查找该文件,但说实话,我不知道当前目录通常在iOS应用程序中是什么,或者即使有任何保证.
关键是,您需要为其提供文件的绝对路径,或者使用imageNamed:
只需要名称并查看主要包的资源.
换一种说法:
UIImage *image = [UIImage imageNamed:@"checkmark"];
UIView *view = [[UIImageView alloc] initWithImage:image];
Run Code Online (Sandbox Code Playgroud)
另一个优点imageNamed:
是它将缓存图像(如果您再次使用它),checkmark@2x
如果您的设备具有Retina显示器,它将自动查找版本.
如果您不想要此行为,则可以直接获取路径:
NSString *imagePath = [[NSBundle mainBundle] pathForResourceNamed:@"checkmark" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
Run Code Online (Sandbox Code Playgroud)
如果它是一个大图像并且你不想缓存它(因为你不会经常使用它),这通常是一个更好的选择.
归档时间: |
|
查看次数: |
4598 次 |
最近记录: |