setBackgroundImage适用于模拟器但真实设备(IOS5.1.1)

时间:2012-06-06 10:02:45

标签: uibutton ios-simulator device ios5.1 setbackground

我在viewWillAppear中编写了一些代码,以便更改某些按钮的背景图像。它在模拟器中工作正常。但是,当我将它加载到真实设备时,它不起作用。该设备是IOS5.1.1。

任何人都知道这是什么问题?谢谢!

(void)viewWillAppear:(BOOL)animated
{

    [super viewWillAppear:animated];

    ...

    //set dataTypeSelect buttons background

    UIImage *tmpImage = [UIImage imageNamed:@"White.png"];

    [self.dataTypeSelectBut0 setBackgroundImage:tmpImage forState:UIControlStateNormal];

    [self.dataTypeSelectBut1 setBackgroundImage:tmpImage forState:UIControlStateNormal];

    [self.dataTypeSelectBut2 setBackgroundImage:tmpImage forState:UIControlStateNormal];

    tmpImage = [UIImage imageNamed:@"Cyan.png"];

    iTDLAppDelegate *tmpAppDelegate = (iTDLAppDelegate *)[[UIApplication sharedApplication] delegate];

    switch(tmpAppDelegate.viewingDataType)
    {
        case EnumDataType_HkHorse:
            [self.dataTypeSelectBut0 setBackgroundImage:tmpImage forState:UIControlStateNormal];
            break;
        case EnumDataType_S1:
            [self.dataTypeSelectBut1 setBackgroundImage:tmpImage forState:UIControlStateNormal];
            break;
        case EnumDataType_S2:
            [self.dataTypeSelectBut2 setBackgroundImage:tmpImage forState:UIControlStateNormal];
            break;
    }

    ...

}

1 个答案:

答案 0 :(得分:3)

我已经确定它是由图像文件名引起的。

文件名是“White.PNG”和“Cyan.PNG”。
我的代码如下

UIImage *tmpImage = [UIImage imageNamed:@"White.png"];
UIImage *tmpImage = [UIImage imageNamed:@"Cyan.png"];

它们在模拟器中工作正常但是真实的设备。
我发现tmpImage的返回值在实际设备中为空。

现在我将它们改为

UIImage *tmpImage = [UIImage imageNamed:@"White.PNG"];
UIImage *tmpImage = [UIImage imageNamed:@"Cyan.PNG"];

他们现在都可以正常工作。 :)