UIButton图像在tableviewcell中失真

时间:2013-08-09 18:47:12

标签: ios objective-c image uitableview uibutton

我在每个tableviewcell中都有一个UIButton,我有一个图像。基本上我根据另一个参数将图像设置为不同的。你可以忽略totalTime / activityTimeInt的东西,但如果它有用,它们只是整数(比如总时间= 60,活动时间= 50)。以下是cellforrowatindexpath:

    if(totalTime <= activityTimeInt){
        [cell.vicinitimeGraphicButton setImage:[UIImage imageNamed:@"travelDistanceGraphicRed.png"] forState:UIControlStateNormal];
        [cell.vicinitimeGraphicButton setFrame:CGRectMake(5,13,70,70)];
    }
    if(totalTime + 10 >= activityTimeInt){
        [cell.vicinitimeGraphicButton setImage:[UIImage imageNamed:@"travelDistanceGraphicYellow.png"] forState:UIControlStateNormal];
            [cell.vicinitimeGraphicButton setFrame:CGRectMake(5,13,70,70)];
    }
    if(totalTime >=  activityTimeInt){
        [cell.vicinitimeGraphicButton setImage:[UIImage imageNamed:@"travelDistanceGraphicGreen.png"] forState:UIControlStateNormal];
           [cell.vicinitimeGraphicButton setFrame:CGRectMake(5,13,70,70)];
    }
}
else if (!totalTime){
            [cell.vicinitimeGraphicButton setImage:[UIImage imageNamed:@"travelDistanceGraphicGreen.png"] forState:UIControlStateNormal];
    [cell.vicinitimeGraphicButton setFrame:CGRectMake(5,13,70,70)];
}
return cell;

由于某种原因if语句贯穿

else if (!totalTime){
            [cell.vicinitimeGraphicButton setImage:[UIImage imageNamed:@"travelDistanceGraphicGreen.png"] forState:UIControlStateNormal];
    [cell.vicinitimeGraphicButton setFrame:CGRectMake(5,13,70,70)];
}

其中totalTime不存在,图像如下:without totalTime if statement

当它运行其他3个if语句(带有totalTime)时,它们看起来像:with totaltime ifstatements

如果您需要更多信息,请询问。提前致谢。

2 个答案:

答案 0 :(得分:2)

您需要使用此代码

[cell.vicinitimeGraphicButton setBackgroundImage:[UIImage imageNamed:@"travelDistanceGraphicRed.png"]
                        forState:UIControlStateNormal];

因为

  1. setImage:forState:将图片设置为按钮的实际内容。例如,即使您设置了按钮 title 也看不到,因为您已将图像设置为内容,否则您可以看到左侧的图像和右侧的文本在你的情况下

  2. setBackgroundImage:forState:将图片设置为背景。在这种情况下,您可以设置标题,它会显示在图像的顶部。

  3. 请注意,您没有将默认背景图像设置为按钮

答案 1 :(得分:0)

我发现问题是我在customtablecell.xib文件中设置了默认图像,而我不应该这样做。我失败了。然而,它应该像ayush上面说的那样是背景图像。

enter image description here

默认图片不应设置为任何内容。