自定义UIButton背景图像显示在iOS 6但不是iOS 5

问题描述:

我在界面生成器中设置了按钮背景,但没有显示出来,所以我以编程方式设置它。所有(但一个按钮......为什么?)在模拟器上显示,但从未在设备上显示。自定义UIButton背景图像显示在iOS 6但不是iOS 5

我得到这样的输出:

Could not load the "gray_button.png" image referenced from a nib in the bundle with identifier "com.example.ios"

这是代码:

- (void) viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    [self.getMyTripButton setBackgroundImage:[UIImage imageWithContentsOfFile: 
              [[self getFullPathname] stringByAppendingPathComponent:@"images/gray_button.png"]] 
           forState:UIControlStateNormal]; 
    [self.popupButton setBackgroundImage:[UIImage imageWithContentsOfFile: 
             [[self getFullPathname] stringByAppendingPathComponent:@"images/gray_button.png"]] 
          forState:UIControlStateNormal]; 


    [self.viewOurPackages reloadData]; 
} 

我也试图与imageNamed更换imageWithContentsOfFile两者产生相同的结果。

我在我的项目>目标>构建阶段>复制包资源中添加了图像目录,但我认为这是一切开始出错的地方,我找不出原因。可能是因为它是一个目录?

我想指出,我有双倍和三倍检查,它不是大小写/区分大小写的问题。

更新:我解决了一个按钮没有显示。看起来真正的问题是图像在iOS6和不在iOS5上显示。

+0

如果它显示,而不是在模拟器设备,可能的问题是该文件的名称是错误的。检查gray_button.png是完全一样的,没有大写字母在其他地方使用在模拟器中工作正常,但在设备中它不会工作,如果名称是不同的 – iDev

+0

这就是正确的名字,但我会说我们确实有一个gray_button.png和一个[email protected] – Stephanie

+0

尝试在模拟器和设备上清理和重建您的项目,并检查结果是否有任何变化 –

什么为我工作是以下3种情况之一(或组合):

  1. 确保您的图像文件格式正确无误。有时PNG文件需要一点强制。 (我认为这具体是我的问题)
  2. 确保您的按钮的类型在界面生成器中定制或UIButtonTypeCustom
  3. 如果要设置在Interface Builder中的形象和它仍然没有显示,使用[button setBackgroundImage:image forState:UIControlStateNormal](或[button setImage:image forState:UIControlStateNormal]设置明确的代码取决于你需要哪一种。

如果你在一个文件夹添加到副本束,然后而不是引用该文件为gray_button.png,你应该从代码,如果引用或厦门国际银行,您将不得不在名称中包含的目录也如directory/gray_button.png

+0

我这样做。我得到完整的路径名。我也试过了'images/gray_button.png'。 – Stephanie

Steph,

如果您使用@synthesize作为.h file中的按钮,则会自动创建获取器和设置器。因此,名字getMyTripButton(这是一个很长的想法)可能会让Xcode产生混淆。尝试重命名变量?

只要图像不加载...其中一个按钮,而不是其他... da faq?这是gray_button.png被叫的唯一地方吗? (例如,您不会在其他地方修改该按钮,可能会告诉它再次使用该图像)。你有没有尝试把它放在与使用它的笔尖相同的目录中?你确定getMyTripButton从笔尖正确绑定到代码?

最后一件事我能想到的现在: 你说

我设置在界面生成器按钮的背景,但这并不是 显示出来,所以我把它编程。所有(但一个按钮......为什么?) 显示了模拟器,但设备

做从来没有告诉你有popupButton的背景图片也是在笔尖/界面生成器设置?如果你已经设置了它并且在这里重新设置它,它可能是它并没有真正被设置在代码中,而只是使用界面生成器中的内容,这可以解释为什么getMyTripButton可能不会显示/显示背景图像。

如果我想到其他任何可能导致此问题的内容,我将编辑此帖子。祝你好运,并挂在那里。