为什么不显示Images.xcassets中的图像?

时间:2015-06-17 06:32:13

标签: ios image

我的 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];

图像集中的图像如下: enter image description here enter image description here

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

问题是你还没有理解资产目录的原理。它们为其资产提供图像集的名称。您不再使用旧的基于大小的图像名称。这是资产目录的重点!您使用一个名称,并为您选择适合您硬件的正确资产。

因此,例如,这次调用是错误的:

[UIImage imageNamed:@"share_btnM@2x.png"]

您的图片集名为 share_btnM ,所以您可以简单地说:

[UIImage imageNamed:@"share_btnM"]

您需要查看所有代码,找到所有imageNamed:来电,并在任何地方修复此问题。然后你的图像就可以了。