我在滚动视图中创建了一个包含图像视图的应用 我有3个类,每个类将图像添加到图像视图中。
当我按下按钮1时,它会调用class1并填充Class1images(从image001到image200)。
当我按下button2时,它会调用class2并填充Class2images(从image201到image400)
问题是当我调用class1时,图像视图显示class1images(从image001到image200) 在调用class1之后,我调用class2 当我调用class2时,我的图像视图无法显示class2images(从image201到image400) 但是,class1Images(从image001到image200)仍然在应用程序中。
我认为class1图像仍在内存中,因此class2图像无法添加到内存中 当我调用class2时,我想删除class1images 当我调用下一个类时,它将删除内存中的旧图像并替换为新图像。
但是,我的应用程序是用故事板和ARC开发的 因此,我无法在ARC模式下手动释放内存 有没有办法删除内存中的旧图像?
- (void)viewDidLoad{
[super loadView];
self.view.backgroundColor = [UIColor grayColor];
ScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height)];
ScrollView.pagingEnabled = YES;
NSInteger numberOfViews = 200;
for (int i = 0; i < numberOfViews; i++) {
CGFloat xOrigin = i * self.view.frame.size.width;
// Create a UIImage to hold Info.png
UIImage *image1 = [UIImage imageNamed:@"Image001.jpg"];
UIImage *image2 = [UIImage imageNamed:@"Image002.jpg"];
:
:
UIImage *image200 = [UIImage imageNamed:@"Image200.jpg"];
NSArray *images = [[NSArray alloc] initWithObjects:image1,image2, . . . ,image200,nil];
ImageView = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin, 0,self.view.frame.size.width, self.view.frame.size.height)];
[ImageView setImage:[images objectAtIndex:i]];
[ScrollView addSubview:ImageView];}
ScrollView.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews,self.view.frame.size.height);
[self.view addSubview:ScrollView];}
答案 0 :(得分:0)
将imageview的animationImages
属性设置为新数组将删除olf数组并为新数组设置动画。
要110%安全调用stopAnimation,设置图像,调用startAnimation
答案 1 :(得分:0)
我认为你的滚动视图没有得到清理。您需要从scrollView中删除以前的图像,然后从下一个类添加图像。
尝试实现类似这样的功能,从scrollview中删除图像,然后在按钮上添加其他图像
for(UIView *subView in self.ScrollView.subviews)
{
if([subView isKindOfClass:[UIImageView class]])
[subView removeFromSuperview];
}
希望可以帮到你。试试吧。