如何在iOS应用程序内更改UIImageView中的图像?

时间:2012-12-06 19:15:08

标签: ios uiimageview uiimage

我有一个UIImageView对象,我实例化并转换为iOS应用程序内的属性。我在viewDidLoad方法中初始化此UIImageView对象的属性,但是,我需要稍后在另一个方法中更改UIImageView对象中包含的图像。当我这样做时,我出于某种原因只是将新图像叠加在旧图像的顶部。我想做的只是调整框架的大小,并用新的图像替换旧图像。

以下是相关代码:

在我的viewDidLoad方法中:

imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 250, 300, 200)];
imageView.image = [UIImage imageNamed:@"firstImage.png"];
[self.view addSubview:imageView];

并在我希望进行更改的方法中:

imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 250, 200, 300)];
imageView.image = [UIImage imageNamed:@"secondImage.png"];
[self.view addSubview:imageView];

请记住,我不想只是更改图像,而是要调整帧大小以适应新图像。谁能看到我做错了什么?

1 个答案:

答案 0 :(得分:3)

您正在创建另一个imageview实例。您需要访问同一个对象并在那里更改框架和图像。

试试这个,

在类中创建imageView作为属性,

在.h文件中,

@property(nonatomic, retain) UIImageView *imageView;

然后在viewDidLoad

self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 250, 300, 200)];
self.imageView.image = [UIImage imageNamed:@"firstImage.png"];
[self.view addSubview:imageView];

第二种方法,只需更改框架和图像,如下所示,

self.imageView.frame = CGRectMake(10, 250, 200, 300);
self.imageView.image = [UIImage imageNamed:@"secondImage.png"];

根据您的代码,您正在为imageView创建单独的实例,并添加为子视图,这将导致它叠加在另一个上。相反,您需要创建一个如上所示的实例,并在需要时修改其框架和图像属性。