UIImageView setImage或setBackgroundColor,哪一个在iOS中更好

时间:2016-01-13 06:31:09

标签: ios objective-c uiimageview

我可能会为这个问题投票,但我很好奇,无法找到任何解释。所以我要在这里发布。

我的问题是,我必须在自定义单元格中显示自定义分隔符图像。如果我只设置CREATE TABLE的背景颜色,而不是设置CREATE TABLE `try`.`testing` ( `id` INT NOT NULL AUTO_INCREMENT, `date` DATE NOT NULL , `text_1` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `text_2` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (`id`) -- as primary key KEY (`id`) -- or as key ) ENGINE = MyISAM; ,那么它是更好的方法吗?

以下是解释我的问题的示例屏幕截图。

enter image description here

在此屏幕截图中,我有黑色和灰色分隔符。

imageView

OR

UIImage

现在,哪一个更好?我只知道[barImage setBackgroundColor:[UIColor blackColor]]; [greyBarImage setBackgroundColor:[UIColor greyColor]]; 有点慢,我们应该避免,但我不确定。

修改

这是我在发布此问题后所知道的:

设置图片:

  • 这将耗费RAM
  • 图片不会覆盖整个imageView,因此[barImage setImage:[UIImage imageNamed:@"black.png"]]; [greyBarImage setImage:[UIImage imageNamed:@"grey.png"]]; 上可能会有不透明的部分

设置背景颜色:

  • 这是CPU的开销,但会减少应用程序内存。
  • 背景颜色将覆盖整个imageNamed:,因此整个UIImageView将是不透明的,并会响应触摸。

4 个答案:

答案 0 :(得分:6)

如果两个解决方案都适合您,设置背景颜色将优于设置图像

[barImage setBackgroundColor:[UIColor blackColor]];
[greyBarImage setBackgroundColor:[UIColor greyColor]];
  

因为这将

     

1.保存您的应用资源(图片)。

     

2.避免运行时图像加载问题(在重命名替换的情况下)。

请参阅Simple drawing appImage drawing app

答案 1 :(得分:1)

更改背景颜色会更好,因为: -

  1. 与加载图片相比,它将占用更少的内存。
  2. 如果您要设置图像,那么代码将是运行时,而您只使用颜色,在这种情况下代码将在编译时。
  3. 与加载图片相比,它会更快。 您可以在给定图像中看到实例: -
  4. 如果我们要仅改变背景颜色,那么它会更快并占用更少的内存

    enter image description here

    enter image description here

    或者,如果您只想更改背景颜色会更好,那么您必须使用UIView而不是UIImageView

答案 2 :(得分:1)

最终用户可以看到的一个具体更改是,如果可以选择/突出显示单元格,如果使用背景颜色,则分隔符视图在选中时将丢失其背景。

如果您使用的是图片,则视图会保持相同的外观和感觉。

如果您关心这一点,请转到图片,如果没有,请选择背景颜色,更容易理解,调整,它可能会占用更少的资源(取决于您的图像)。

答案 3 :(得分:0)

要在tableview单元格上设置自定义分隔符颜色,您只需指定所需的分隔符颜色

即可
[tableView setSeparatorColor:[UIColor grayColor]];

如果您想要显示替代颜色,请在

中添加以上语句
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

方法并使用indexPath参数区分。