3

这是我面临的问题:我正在制作一个UIScrollView,它将有一个图案图像来填充背景。也就是说,我需要一个背景来配合 UIScrollView 滚动。一个很好的例子是iPad 上的Game Center应用程序。背景将使用滚动视图平滑滚动。

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

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

但不幸的是,滚动性能非常糟糕,占用了太多内存。

然后我尝试像这样在drawRect中使用CGContextDrawTiledImage:

- (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 上仍然不能令人满意。我一定是做错了什么或滥用了某些方法,因为游戏中心在滚动时表现得非常好。任何人都可以为我提供解决 UIScrollView 背景性能问题的解决方案吗?非常感谢!!

4

1 回答 1

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 则只使用一个单元格背景图像,并且图像宽度应该与 scrollView 的宽度相同,因为 colorWithPatternImage: 方法像平铺属性一样工作。

仅将此图像放入您的项目并将其用作 UIScrollView 的背景颜色。

[scrollView setContentSize:CGSizeMake(320.0, 1000.0)];
[scrollView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"cellImage.png"]]];
于 2013-10-10T05:48:55.717 回答