我的 Images.xcassets 中有一些图片资源。最近,在iPhone / iPad设备上进行测试时,它们无法在应用程序中显示。
我猜他们在构建和打包时不会被复制到Bundle。然后我检查一下 构建阶段中的复制捆绑资源。 Images.xcassets 就在这里。 一个奇怪的情况是它在模拟器中运行良好,但在真实设备中失败了。对于干净的测试,每次我将删除应用程序然后再次运行。
部分摘录如下:
UIButton *button_Share = [[UIButton alloc]initWithFrame:CGRectMake(13,33,64,20)];
[button_Share setBackgroundColor:[UIColor clearColor]];
[button_Share setUserInteractionEnabled:YES];
[button_Share setImage:[UIImage imageNamed:@"share_btnM@2x.png"] forState:UIControlStateNormal];
[button_Share addTarget:self action:@selector(click_Share) forControlEvents:UIControlEventTouchUpInside];
[imageview_ButtonBg addSubview:button_Share];
UIButton *button_AddTo = [[UIButton alloc]initWithFrame:CGRectMake(112,33,97,20)];
[button_AddTo setBackgroundColor:[UIColor clearColor]];
[button_AddTo setUserInteractionEnabled:YES];
[button_AddTo setImage:[UIImage imageNamed:@"add_cart_btnM@2x.png"] forState:UIControlStateNormal];
[button_AddTo addTarget:self action:@selector(click_AddToCart) forControlEvents:UIControlEventTouchUpInside];
[imageview_ButtonBg addSubview:button_AddTo];
UIButton *button_Buy = [[UIButton alloc]initWithFrame:CGRectMake(243,33,64,20)];
[button_Buy setBackgroundColor:[UIColor clearColor]];
[button_Buy setUserInteractionEnabled:YES];
[button_Buy setImage:[UIImage imageNamed:@"buynow_btnM@2x.png"] forState:UIControlStateNormal];
[button_Buy addTarget:self action:@selector(click_Buy) forControlEvents:UIControlEventTouchUpInside];
[imageview_ButtonBg addSubview:button_Buy];
图像集中的图像如下:
任何帮助都将不胜感激。
答案 0 :(得分:2)
问题是你还没有理解资产目录的原理。它们为其资产提供图像集的名称。您不再使用旧的基于大小的图像名称。这是资产目录的重点!您使用一个名称,并为您选择适合您硬件的正确资产。
因此,例如,这次调用是错误的:
[UIImage imageNamed:@"share_btnM@2x.png"]
您的图片集名为 share_btnM ,所以您可以简单地说:
[UIImage imageNamed:@"share_btnM"]
您需要查看所有代码,找到所有imageNamed:
来电,并在任何地方修复此问题。然后你的图像就可以了。