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