gpt4 book ai didi

performance - CATiledLayer 使用按钮绘制巨大的 UIView?

转载 作者:行者123 更新时间:2023-12-04 06:27:59 24 4
gpt4 key购买 nike

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

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

最佳答案

从 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的力量是它只需要绘制显示在屏幕上的图块。它还使用后台线程并且速度非常快。

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

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

关于performance - CATiledLayer 使用按钮绘制巨大的 UIView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5803348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com