我拍摄了2个像
的图像数组A = [ “l.jpg”, “m.jpg”, “n.jpg”, “p.jpg”, “q.jpg”, “r.jpg”]
和
B = [ “A.JPG”, “B.JPG”, “C.JPG”]。
然后显示图像已添加带有pagecontrol的scrollview (页面控制中的页数将是)
[数组计数]
并且滚动视图的内容大小也取决于[array count]
即
scroll.width * array.count
在这里,如果有4个页面,那么将在内存中加载3个页面,在滚动时,将卸载前一个图像。
1)最初显示A阵列图像。
2)然后点击按钮我将替换scrollview.contentSize,pagecontrol.numberof页面的B数组长度,并卸载以前由A数组加载的图像。
3)要显示B数组,scrollview contentsize将需要很小并且页数为4.因此,我再次重置我的滚动视图
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * [数组计数],scrollView.frame.size.height);
然后我滚动到B阵列中的最后一个图像,在我尝试滚动到下一个图像后的最后一个图像,它显示为没有正确卸载的阵列图像的“q.jpg”图像。
因此,当从不同的图像阵列重新加载时,如何从scrollview中卸载所有图像。
感谢。
答案 0 :(得分: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];
}
这将从您的scrollView中删除所有子视图。当您阅读新的图像阵列时,需要再次重新添加所有图像视图。
答案 1 :(得分:0)
这基本上就是UITableViewController的用途。 您可以动态控制单元格的数量和顺序(在您的情况下,自定义单元格中的图像),并在基础数据发生更改时在表格视图上调用reloadData。
它还为您嵌入了UIScrollView,因此您无需付出艰苦的努力。