Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UI按钮图像在tableviewcell中被扭曲_Ios_Objective C_Image_Uitableview_Uibutton - Fatal编程技术网

Ios UI按钮图像在tableviewcell中被扭曲

Ios UI按钮图像在tableviewcell中被扭曲,ios,objective-c,image,uitableview,uibutton,Ios,Objective C,Image,Uitableview,Uibutton,我在每个有图像的tableviewcell中都有一个UIButton。基本上,我根据另一个参数将图像设置为不同的值。您可以忽略totalTime/activityTimeInt内容,但如果有帮助的话,它们只是int(比如totalTime=60,activitytime=50)。以下是CellForRowAtIndex路径: if(totalTime <= activityTimeInt){ [cell.vicinitimeGraphicButton setImag

我在每个有图像的tableviewcell中都有一个UIButton。基本上,我根据另一个参数将图像设置为不同的值。您可以忽略totalTime/activityTimeInt内容,但如果有帮助的话,它们只是int(比如totalTime=60,activitytime=50)。以下是CellForRowAtIndex路径:

    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;
如果totalTime不存在,则图像如下所示:

当它通过其他3条if语句(使用totalTime)时,它们看起来像:


如果你需要更多的信息,尽管问。提前谢谢

您需要使用此代码

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

  • :将图像设置为按钮的实际内容。例如,即使设置了按钮标题,您也无法看到它,因为您已将图像设置为内容,或者您可以同时看到左侧的图像和右侧的文本

  • :将图像设置为背景。在这种情况下,您可以设置标题并将其显示在图像顶部


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

    我发现问题在于我在customtablecell.xib文件中设置了默认图像,而我本不应该这样做。我失败了。然而,这应该是像阿尤什所说的那样的挫折


    默认图像不应设置为任何值。

    在这些if/else块中是否有其他内容与显示50分钟等的标签相关,而您尚未发布?否,if/else块中除了上面发布的内容外,没有其他内容。至于设置标签,代码是
    cell.travelTimeLabel.text=[totalEverythingTimeArray objectAtIndex:indexPath.row]但我不认为这会影响uibuttonsIs,当totaltime为nil时,单元格中是否还有其他字段会获得值?基本上,代码中必须有其他地方再次使用这些条件,或者再次使用totaltime来设置某些字段值。不,在整个cellforrowatindexpath方法中,只有一个使用totaltime的if/else块。要查看整个方法吗?好的。你可以发布这个方法。此外,如果这是一个自定义UITableViewCell,也可以发布其代码。如果使用setBackgroundImage,则在再次运行该方法后,图像不会更改。tableview会根据搜索而更改,再次搜索后,setBackgroundImage不会在前面显示图像,这就是为什么我使用setImagecorrect me如果我理解错误有时setBackgroundImage有效有时无效这就是你的意思。抱歉,不,我的意思是当我使用setBackgroundImage时,第一次加载tableview时工作正常,但是当我尝试使用setbackgroundimage使用新uibutton图像更新tableview时,新更新的图像会隐藏在旧图像后面。因此,仅显示在我首次加载tableview时加载的uibutton图像。我可能有错,但当我使用setImage时,图像似乎正在更新。因此,在更新表视图时出现问题。如果我使用setImage,则加载新图像后,表视图可以更新,但图像会失真,如我在问题中所说
    
    [cell.vicinitimeGraphicButton setBackgroundImage:[UIImage imageNamed:@"travelDistanceGraphicRed.png"]
                            forState:UIControlStateNormal];