Finding image name loaded into UIImage instance

2019-08-26 10:12发布

问题:

How can I find out what the image name (usually file name?) loaded into a UIImage instance is? In this case, they were all initWithContentsOfFile:.

回答1:

Once it's loaded using that, you can't. The file name is only used to load the data into memory. After that, it becomes irrelevant.

If you need to maintain the file name, then perhaps you need to make a class with the filename (as an NSString or NSURL, perhaps) and the image data (as an NSImage or NSData object) as ivars. I'm not sure what your application is, so I can't give you any architectural advice at this point.



回答2:

If you already know what the image names are you can compare your image to another image using image named:

if (bg.image == [UIImage imageNamed:@"field.jpeg"]) {
    bg.image = [UIImage imageNamed:@"cave.jpeg"];
} else {
    bg.image = [UIImage imageNamed:@"field.jpeg"];
}

Here I use one button to switch between two images.



回答3:

It's also something you can't just add a category on UIImage to, unfortunately, because it requires state.