我有一个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];
请记住,我不想只是更改图像,而是要调整帧大小以适应新图像。谁能看到我做错了什么?
答案 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创建单独的实例,并添加为子视图,这将导致它叠加在另一个上。相反,您需要创建一个如上所示的实例,并在需要时修改其框架和图像属性。