1

我有一个 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];

请记住,我不仅要更改图像,还要更改帧大小以适应新图像。谁能看到我做错了什么?

4

1 回答 1

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"];

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

于 2012-12-06T19:16:21.053 回答