如何解决将UIImage传递给函数并在外部进行编辑
| 假设我们有UIView子类的这部分代码:self.myImage = [UIImage imageNamed:@\"img1.jpg\"];
[self myFunc:self.myImage];
myFunc在这里定义:
-(void)myFunc(UIImage*)img{
UIImageView *imgView = [[UIImageView alloc]initWithImage:img];
[self addSubview:imgView];
}
现在,如果我决定在myFunc调用后更改self.myImage,则在视图中显示img1.jpg。
self.myImage = [UIImage imageNamed:@\"img2.jpg\"];
为什么我继续显示img1而不是img2? myFunc收到的UIImage指针不直接是对象...我很困惑,我想念一些非常重要的东西。
编辑-
我想有很多UIImageView,并且这些视图的每个图像ivar必须指向相同的图像地址,每个UIImageView都有一个新图像时,要在该地址处更改图像,我该怎么做?
解决方法
给出您的代码。假设将img1.jpg加载到内存中时,它的地址为1000。然后使用ivar myImage指向它。当您将该ivar传递给函数并创建UIImageView时,它也指向img1.jpg。
现在,当您将img2.jpg加载到内存中时,它到达了另一个地址,例如2000。然后更新了ivar myImage以指向该新位置。 img1.jpg仍位于地址1000中,并且仍由UIImageView使用。
如果要更改UIImageView的图像,则必须使用该类的image属性。
,实际上,您提供给UIImageView的UIImage本身并不知道它所属的视图。可以在不同的视图中使用它。您必须向UIImageView对象询问其显示的当前图像。如果要更改显示的图像,请输入:
self.imgView.image = [UIImage imageNamed:@\"img2.jpg\"];
最好为UIImageView添加一个属性,以便可以从类中的任何位置访问它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。