开发者

UIImageView's image disappears when changing the image

开发者 https://www.devze.com 2023-03-03 13:03 出处:网络
When changing the image on an UIImageView in code, the image disappears. This only happens on an iPo开发者_开发技巧d Touch device, not on the iPhone emulator.

When changing the image on an UIImageView in code, the image disappears. This only happens on an iPo开发者_开发技巧d Touch device, not on the iPhone emulator.

In my bundle I have an image named SomeImage.PNG

NSString *path = [[NSBundle mainBundle] pathForResource:@"SomeImage" ofType:@"png"];
[self.background setImage:[[UIImage alloc] initWithContentsOfFile:path]];

I must reiterate, this works fine on the iPhone simulator but not on an iPod Touch device.

Notice that the image file has an upper-case file extension, but in my code it is declared with lower case. This is the problem. So to fix the problem, change the code to this:

NSString *path = [[NSBundle mainBundle] pathForResource:@"SomeImage" ofType:@"PNG"];
[self.background setImage:[[UIImage alloc] initWithContentsOfFile:path]];

I am asking if there is a 'better' way to do what I am doing, so I don't come across such issues in the future.


Not really. Unfortunately the iOS file system is case sensitive.

Something like this.....?

NSString *filename = @"SomeImage";
NSString *extension = @"png";
UIImage *img = nil;
NSString *path = nil;

path = [[NSBundle mainBundle] pathForResource:filename ofType:[extension lowercaseString]];
img = [[UIImage alloc] initWithContentsOfFile:path];

if (img == nil) {
    path = [[NSBundle mainBundle] pathForResource:filename ofType:[extension uppercaseString]];
    img = [[UIImage alloc] initWithContentsOfFile:path];
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号