2011-08-16 43 views
3

创建UIImageView我有一个复选标记的图像作为.png放在与我的项目相同的目录中,名为“checkbox.png”。我想创建一个具有该图像的UIImageView作为背景,并将其设置为一组UITableViewCells的附件视图。我目前有:无法从文件

UIView * v = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkmark.png"]]; 
v.backgroundColor = [UIColor redColor]; 
cell.accessoryView = v; 
[v autorelease]; 

哪一个不工作。我可以让另一个虚拟的UIView(前。

v = [[UIView alloc] init]; 
v.backgroundColor = [UIColor redColor]; 

的正常工作,它会显示在我的uitableviewcells右侧的一个红色的小盒子。我“米不知道为什么与复选框的观点是行不通的。我指定文件路径的方式有什么问题吗?

+0

你检查了图像视图的框架,以确保它有一些宽度和高度? – jtbandes

回答

7

imageWithContentsOfFile:需要指向文件的路径。如果你只是给它一个文件名,它会在当前目录中查找文件,但说实话,我不知道当前目录通常在iOS应用程序中,或者即使有任何保证。

问题是,您需要给它一个文件的绝对路径或使用imageNamed:,它只需要一个名称并查看主包的资源。

换句话说:

UIImage *image = [UIImage imageNamed:@"checkmark"]; 
UIView *view = [[UIImageView alloc] initWithImage:image]; 

imageNamed:另一个优点是,它会缓存图像(如果你再次使用它),它会自动寻找一个[email protected]版本,如果您的设备具有Retina显示屏。

如果不希望这种行为,你可以直接得到的路径:

NSString *imagePath = [[NSBundle mainBundle] pathForResourceNamed:@"checkmark" ofType:@"png"]; 
UIImage *image = [UIImage imageWithContentsOfFile:imagePath]; 

这通常是一个更好的选择,如果它是一个大的图像,你不想缓存它(因为你赢了经常使用它)。

1

如果您使用imageWithContentsOfFile:方法,您需要具有文件路径。如果图像位于主包中,则以下操作将会执行绝招:

UIView * v = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkmark.png"]]; 
1

请确定您已添加图片文件到您的XCode项目。将它放在同一个目录中是不够的。在XCode中,选择文件菜单,然后选择“添加文件到......”您的项目。