【问题标题】:Changing Image in UIImageview having same tag在具有相同标签的 UIImageview 中更改图像
【发布时间】:2014-10-20 15:43:04
【问题描述】:

我想通过重命名图像名称机制来更改 UIImageview 中的图像。

由于我的项目中有很多 XIB,我需要在单击按钮时更改背景图像。基本上用户有主题 1 和主题 2 选项。

点击 theme-1 我需要在所有 xib 上的所有 imageview 上设置 bg_yellow.png 点击theme-2我需要在所有xib上的所有imageview上设置bg_red.png

这可以通过创建每个图像视图的引用并编写 if 条件来实现。但这是浪费时间和大量精力。

无论如何我可以在资源文件夹下的运行时重命名我的图像文件吗?

【问题讨论】:

  • 为了实现你想要的,我建议使用不同的包。而且在设置主题之前,我建议销毁视图控制器,将数据保存在核心数据或 sqlite 中,然后再次从另一个包重新加载视图控制器 XIBS 和其他图像,并从核心 dat 或 sqlite db 重新加载数据。在我看来,这将是为您提供通用代码的最快方式,这样明天如果您需要添加另一个主题,您可以创建另一个包并加载它。
  • 最好的方法是继承 UIImageView。创建具有主题属性的 MyThemedImageView 类。更改此属性必须导致图像更改。您可以通过通知更改此属性,也可以创建 UIView 子类 MyThemedView,以便它会自动更改其子视图的主题。

标签: ios ipad uiimageview


【解决方案1】:

此行将更改您所有UIImageViews 中的image

[[UIImageView appearance] setImage:[UIImage imageNamed:@"Image.png"]];

如您所说,只要您想更改应用的“主题”,就运行该行代码(使用您想要的任何图像文件)。

编辑

根据我们的讨论,这里有一个示例,说明如何使用 tag1 设置图像:

[(UIImageView *)[self.view viewWithTag:1] setImage:[UIImage imageNamed:@"Image.png"]];

【讨论】:

  • 但是这段代码可能会改变子图像视图上的图像??因为我在同一个 XIB 中有其他图像视图。我不想只更改背景一个。
  • 是否有任何选项可以按标签更改,因为我可以设置所有背景图像视图的相同标签
  • 仅供参考,您确实说过“所有 xib 上的所有图像视图”。你的意思是tag
  • 是的,我的错误我在同一个 xib 上也有其他图像视图。但是我可以使用标签吗?
  • 你可以使用标签。您必须知道图像视图具有哪些标签,并将值硬编码到一个循环中。您也可以使用IBOutletCollection。你想做这些吗?
猜你喜欢
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
  • 2015-07-21
相关资源
最近更新 更多