0

我已经拍摄了 2 个图像阵列,例如

A=["l.jpg","m.jpg","n.jpg","p.jpg","q.jpg","r.jpg"]

B=["a.jpg","b.jpg","c.jpg"]。

然后显示图像已添加带有 pagecontrol 的滚动视图(page-control 中的页面数将为)

[数组计数]

而且滚动视图的内容大小也取决于[array count]ie

scroll.width * array.count

在这里,如果有 4 个页面,那么 3 个页面将被加载到内存中,并且在滚动之前的图像将被卸载。

1) 最初显示 A 阵列图像。2)然后单击按钮,我将 scrollview.contentSize , pagecontrol.numberof 页面替换为 B 数组长度,并卸载先前由 A 数组加载的图像。
3)要显示B数组,滚动视图内容大小需要很小并且页面数为4。所以,我再次重置我的滚动视图

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * [数组计数], scrollView.frame.size.height);

然后我滚动到 B 数组中的最后一个图像,在最后一个图像之后,当我尝试滚动到下一个图像时,它显示为 A 数组图像的“q.jpg”图像,该图像未正确卸载。

那么,当从不同的图像数组重新加载时,如何从滚动视图中卸载所有图像。

谢谢。

4

2 回答 2

0

这本质上就是 UITableViewController 的用途。您可以动态控制单元格的数量和顺序(在您的情况下,自定义单元格中的图像),并且当基础数据发生更改时,只需在表格视图上调用 reloadData 即可。

它还为您嵌入了 UIScrollView,因此您不必费力。

于 2012-09-04T07:16:26.007 回答
0

没测试过,也许你可以使用for循环将所有子视图的图像属性设置为nil?

for(int i = 0; i < previousImageArray.count; i++)
{
   UIImageView *imageView = [[myScrollView subviews] objectAtIndex:i];

   imageView.image = nil;
}

如果这不起作用,您总是可以硬删除子视图:

// get all subviews inside your scrollview into an array
NSArray *subviews = [myScrollView subviews];

// loop through array, for each image view subview in your scrollview
// remove it from the superview (superview is your scroll view in this case)
for(int i = 0; i < subviews.count; i++)
{
    UIImageView *imageView = (UIImageView *)[subviews objectAtIndex:i];

    [imageView removeFromSuperview];
}

这将从您的滚动视图中删除所有子视图。当您读取新的图像数组时,您将需要再次重新添加所有图像视图。

于 2012-08-30T09:09:45.173 回答