在UIScrollView中懒洋洋地添加视图会降低App的速度

时间:2012-08-14 09:50:57

标签: iphone objective-c performance uiscrollview lazy-loading

  

我正在尝试使用mainScrollView实现视图。在mainScrollView里面我有10个UIView,每个都有subScrollView.Now,我想在每个subScrollView里面添加很多(大约150到200个)视图(imageview,label,textview,uiview,webview等)。

类似的东西:

Timeline ww2History of Jazz

我试过以下:
方法1:

  

为每个subScrollView延迟加载以添加视图。

代码:

-(void)loadInnerScrollViewLazily:(int)tag pageNo:(int)pageNo{

/// this array will contain all the views for subScrollView

NSMutableArray *array=[NSMutableArray array];
array=[self.tlScrollContentArray objectAtIndex:tag];  

if (pageNo < 0)
    return;
if (pageNo >= [array count])
    return;

UIView *controller = [array objectAtIndex:pageNo];
CGRect frame = [[array objectAtIndex:0] frame];
frame.origin.x = 350;
frame.origin.y = 0;
controller.frame = frame;

for (UIView* view in [mainScrollView subviews]) {
    for (UIScrollView* scroll in [view subviews]) {
        if ([scroll isKindOfClass:[UIScrollView class]]) {
              if (scroll.tag == tag+11) {

                [scroll addSubview:controller];   /// adds view in particular subScrollView

            }
        }
    }
}

}

  

在scrollViewDidScroll方法中调用此方法,该方法检查特定的scrollView并删除屏幕外的视图,然后根据条件添加视图。

随着滚动率的增加,此代码正在减慢应用程序。

方法2:

引用this教程:

  

将三个UIView(每个都带有subScrollView)添加到mainScrollView中。根据条件更新subScrollView的内容。

但是这个解决方案也减慢了我的应用程序,因为它每次出现时都会更新subScrollView。

是否有可用于管理此功能的库或代码。

任何帮助将不胜感激。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我认为您的代码有很多错误,您需要发布完整的来源才能获得帮助。目前还不清楚您是否要从滚动视图中删除图像。如果没有,那就是你的问题。

查看Apple的示例PhotoScroller代码:http://developer.apple.com/library/ios/#samplecode/PhotoScroller/Introduction/Intro.html

这会使滚动视图上的ImageViews出列并进行管理......我基于此实现了类似的东西。