2

我有这个巨人UIView,大约有 600UIButtons个子视图。大约是UIView2000 x 2000 像素,它本身就是UIScrollView. 我正在尝试实现CATiledLayer这个巨人的渲染层,UIView但我似乎无法弄清楚如何渲染瓷砖。我发现了很多CATiledLayer包含平铺图像、pdf 的示例……但我从来没有找到一个真实的示例来说明如何绘制包含大量子视图的完整 UIView。你可能会问我为什么要坚持UIView?因为我希望用户继续使用按钮与视图进行交互。

我想知道是否有人有关于如何实现该- (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context方法的示例或一些伪代码,请记住,有 1 个巨人的子视图UIView很多。UIbuttons

4

1 回答 1

3

从 iOS 4.0 开始,您可以drawRect:使用drawLayer:inContext:. 苹果的这个问答解释了它:http: //developer.apple.com/library/ios/#qa/qa1637/_index.html。重要的一点是 drawRect: in 4 现在是线程安全的,您可以使用 UIKit 图形功能。

您仍然需要覆盖此方法才能使用CATileLayer

+(Class)layerClass
{
    return [CATiledLayer class];
}

但是你现在可以使用drawRect:

-(void)drawRect:(CGRect)rect
{
    //normal drawing routines here.
}

传递给该方法的矩形将是您的图块的大小,您需要确定需要在特定矩形中绘制什么。的强大之CATiledLayer处在于它只需要绘制屏幕上显示的图块。它还使用后台线程并且非常快。

我没有使用CATiledLayerUIViews,只有大图像。UIViews子类有自己的drawRect:实现吗?我认为您需要确定当前矩形中将显示哪些视图并调用它们的drawRect:方法。

使用drawRect:仅适用于 iOS 4.0 及更高版本,不适用于旧版本。

于 2011-04-28T14:08:31.123 回答