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



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

以下是相关代码:

在我的视图中DidLoad 方法中:

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];
请记住,我不仅想更改图像

,还想更改框架大小以适应新图像。 谁能看出我做错了什么?

您正在创建图像视图的另一个实例。您需要访问相同的对象并在那里更改帧和图像。

试试这个,

创建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 创建单独的实例并添加为子视图,这将导致它叠加在另一个实例上。相反,您需要创建单个实例,如上所示,并在需要时修改其帧和图像属性。

最新更新