0

我制作了一个应用程序,其中包含滚动视图中的图像视图。
我有 3 个班级,每个班级都将图像添加到图像视图中。

当我按下button1时,它调用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];}
4

2 回答 2

0

将 imageview 的animationImages属性设置为新数组将删除 olf 数组并为新数组设置动画。

要 110% 安全调用 stopAnimation,设置图像,调用 startAnimation

于 2013-02-08T08:40:23.353 回答
0

我认为你的滚动视图没有得到清理。您需要从 scrollView 中删除以前的图像,然后从下一个类中添加图像。

尝试实现这样的东西来从滚动视图中删除图像,然后在按钮单击上添加其他图像

for(UIView *subView in self.ScrollView.subviews)
{
    if([subView isKindOfClass:[UIImageView class]])
            [subView removeFromSuperview];
}

希望能帮到你。试一试。

于 2013-02-08T09:50:36.420 回答