2012-05-16 42 views
3

这里是我面临的问题:我想提出一个的UIScrollView将有模式图像填充背景。也就是说,我需要一个背景来滚动UIScrollView。这方面的一个很好的例子是游戏中心的应用程序,在iPad上。背景将使用滚动视图平滑滚动。的UIScrollView与图案像作为背景

目前我有两种方法来实现这种效果,但他们都没有提供良好的性能。 首先我想这

self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:kRLCastViewBGUnit]]; 

但不幸的是,滚动表现得非常糟糕,占据了太多的内存。

然后我试图使用CGContextDrawTiledImage在drawRect中是这样的:

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef currentContext = UIGraphicsGetCurrentContext(); 

    CGContextTranslateCTM(currentContext, 0, rect.size.height); 
    CGContextScaleCTM(currentContext, 1.0, -1.0); 

    CGContextClipToRect(currentContext, rect); 
    CGRect centerTileRect = CenterTileRect; 
    CGContextDrawTiledImage(currentContext, centerTileRect, [ResourceProvider backgroundTileImageRef]); 

} 

它仍然不是新iPad令人满意。我一定做错了什么或者误用了一些方法,因为Game Center在滚动时表现的很好。任何人都可以提供解决方案来解决UIScrollView背景的性能问题?非常感谢!!

+0

这实际上是一个很好的问题,我也无法找到解决方案。特别是在新iPad上,性能非常糟糕。 – rubenfonseca

+1

其实我最后手动处理背景..我添加两个UIImageViews到UIScrollView和调整两个背景上下,使它看起来像有一个带纹理的背景滚动它.. – GabrielYeah

+0

试图释放所有的变量和对象不再使用.. – Krunal

回答

0

您应该改用UITableView。在这里你可以很容易地设置cell.backgroundView。

UIImageView *backgroundView = [[UIImageView alloc] initWithFrame:CGRectMake:(0.0,0.0,320.0, height)]; 
backgroundView.image = [UIImage imageNamed:@"Shelf.jpeg"]; 
cell.backgroundView = backgroundView; 

,如果你真的想只使用UIScrollView的那么只需要一单元格背景图像和图像宽度应该是相同的滚动视图的宽度,因为colorWithPatternImage:像平铺财产法的工作。

仅将此图像放入您的项目中,并将其用作backgroundColor的UIScrollView。

[scrollView setContentSize:CGSizeMake(320.0, 1000.0)]; 
[scrollView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"cellImage.png"]]];