我的应用程序层次结构中有多个UIImageViews,我需要为它们设置一个UIImage,它们能够同时更改所有UIImageViews的图像。所以我创建了UIImage作为单例模式,然后我为每个UIImageView设置了这个图像实例。问题是,当更改单例图像时,UIImageViews正在保留旧图像,而不是新分配的图像。您可以对多个视图或屏幕的背景更改以及仅通过更改UIImage实例来一次更改该背景的情况进行成像。为什么UIImageViews没有更新?我不太了解在UIImageView中绘制图像,但我需要了解这种行为。而且我不想在每个屏幕上添加新图像,然后更改所有图像以实现新的"背景效果"。感谢
答案 0 :(得分:1)
如果您希望应用中的{strong>全部 UIImageView
应用新背景,您可以执行[[UIImageView appearance] setBackgroundColor:[UIColor colorWithPatternImage:yourImage]]
(这不是一个非常合适的解决方案,因为UIImageView
通常应该使用其image
属性,而不是backgroundColor
属性
答案 1 :(得分:0)
您可能想要创建一个方法,一次更新所有UIImageView
个实例。例如:
- (void)updateImage:(UIImage *)image
{
self.imageViewA.image = image;
self.imageViewB.image = image;
self.imageViewC.image = image;
self.imageViewD.image = image;
self.imageViewE.image = image;
self.imageViewF.image = image;
self.imageViewG.image = image;
self.imageViewH.image = image;
}
如果您只是创建背景图案,我建议您遵循Davide的方法。
=====
编辑:继续评论中的讨论后,您可以更简洁地使用以下方式实现:
- (void)updateImage:(UIImage *)image
{
for (UIImageView *subview in self.viewArray) {
subview.image = image;
}
}