我希望这可能只是模拟器的问题,但当然这让我很担心,因为我已经提交了支持Retina的应用程序,并且在16日之前无法对其进行测试。我在我的应用程序中实现了一个CATiledLayer来查看非常大的map。map的图block来自互联网,但它们也会被缓存,因此通常它们实际上是直接从设备加载的。在iPad1和iPad2上它运行得很好。您几乎无法注意到iPad2上渲染的图block,即使它们来自互联网。在iPad模拟器上,它运行得非常好。我的问题是iPad视网膜模拟器。从视觉上看,它看起来还不错。map大小合适,并与我用来显示数据叠加层的另一层对齐,但加载速度非常慢。我尝试的大多数时候,它根本
我正在为CATiledLayer生成一堆图block。在iPhone4S上生成120个256x256的4级细节图block大约需要11秒。图片本身适合2048x2048。我的瓶颈是UIImagePNGRepresentation。生成每张256x256图像大约需要0.10-0.15秒。我已经尝试在不同的后台队列上生成多个图block,但这只会将其缩短到大约9-10秒。我也试过使用ImageIO框架和这样的代码:-(void)writeCGImage:(CGImageRef)imagetoURL:(NSURL*)urlandOptions:(CFDictionaryRef)options
我正在为CATiledLayer生成一堆图block。在iPhone4S上生成120个256x256的4级细节图block大约需要11秒。图片本身适合2048x2048。我的瓶颈是UIImagePNGRepresentation。生成每张256x256图像大约需要0.10-0.15秒。我已经尝试在不同的后台队列上生成多个图block,但这只会将其缩短到大约9-10秒。我也试过使用ImageIO框架和这样的代码:-(void)writeCGImage:(CGImageRef)imagetoURL:(NSURL*)urlandOptions:(CFDictionaryRef)options
请看这个简单的CATiledLayer示例https://github.com/seanhess/CATiledLayer-Example它由一个具有如下层次结构的viewController组成:view:(frame=windowsize)scrollView:(frame=windowsize,contentsize=200x4000)contentView:(frame=contentsize=200x4000,tilesize=100x100)内容View的图层已被覆盖为CATiledLayer。如果您运行链接代码,您会看到多次请求具有相同矩形的图block。它会在您第一次运
我们在iPad3上发生了内存不足的崩溃,我们将其追溯到以下场景:使用CATiledLayer并绘制内容(例如PDF)的UIView具有带有自己的drawRect方法的subview(例如,突出显示搜索结果)。这使得CoreAnimation消耗大量内存(在VMTracker工具中超过100MB),并且很容易导致崩溃。虽然此问题存在于所有设备上,但只有iPad的Retina显示屏会导致缓存大小过大。这可以用Apple的PhotoScroller复制示例:子类化UIView,取消注释drawRect,并向TilingView添加一个实例。该应用程序将在iPad3上崩溃。注释drawRect
我在ScrollView中使用平铺层来显示自定义View。自定义View的内容会定期更改,并且我知道发生这些更改的矩形。但是我发现,如果我执行setNeedsRedisplay,则只会重绘一个图block。我怎样才能告诉CATiledLayer只重绘受影响的图block? 最佳答案 如果您在CATiledLayer上调用setNeedsDisplay,则它会重绘其所有图block。如果您改用setNeedsDisplayInRect,它应该只重绘那些与您指定的矩形相交的图block。但请注意,它会重绘整个图block,而不仅仅是与矩
对于某些面向图片的应用程序,我需要在放大后显示大图片和具有更多细节的可滚动区域。在iOS中看到了使用CATiledLayer的讨论和示例,它似乎在那里完成了工作。是否有适用于Android的CATiledLayer“端口”或类似的东西? 最佳答案 这个库好像很不错:https://github.com/moagrius/TileView 关于android-Android的CATiledLayer替代品?,我们在StackOverflow上找到一个类似的问题:
我正在寻找关于如何拥有相当大的ScrollView(比如8192x8192)的任何建议,它本质上是一个网格,其中放置了大约5-100个按钮的subview。蛮力方法会耗尽内存,因为CALayer似乎正在为ScrollView内容的大小分配位图(使用缩放时内存问题尤为突出)我接下来向它添加了CATiledLayer,这解决了内存问题,但由于瓷砖是异步生成的,因此网格上有模糊效果,并且仍然不理想,因为它使用大量内存来进行本质上微不足道的“绘制”一些线路的任务。似乎如果我能以某种方式控制通过OpenGL在每一帧绘制我自己的网格,并告诉UIKit不要为ScrollView创建位图缓冲区,那将是
我已经研究了几个星期(iOS),但我似乎无法找到可接受的解决方案。要求显示10000x10000像素的背景图片缩放和滚动响应叠加在具有自定义绘图的顶部overlay中的元素是交互式的(点击和突出显示元素等),并且可以打开或关闭部分。iOS4.0可以把它想象成一个虚构城镇的地理map,上面绘制了一个由道路、线条、区域和建筑物组成的疯狂系统。CGPaths与各种不透明度的填充、一些图标图像等的混合。它就像一个更复杂版本的谷歌地图应用程序。我尝试过的:1-多个CATiled层查看层次结构:ScrollView->容器View-->TiledView(CATiledLayer10000x100
我的View有一个CATiledLayer。ViewController具有自定义缩放行为,因此在-scrollViewDidEndZooming上每个图block都需要重绘。但是,即使在每次缩放后在图层上调用-setNeedsDisplay,也并非所有图block都被重绘。这导致View在缩放后有时看起来不对。(应该出现在1个图block中的东西出现在多个地方)。它通常会在另一次缩放后自行纠正。这是相关代码。updatedRects用于测试——它存储由-drawLayer请求绘制的唯一矩形。CanvasView.h:@interfaceCanvasView:UIView@proper