如何在缩放的 CALayer 中保持子层的比例

Posted

技术标签:

【中文标题】如何在缩放的 CALayer 中保持子层的比例【英文标题】:How do I keep scale for sublayer in scaled CALayer 【发布时间】:2012-10-21 18:00:54 【问题描述】:

我想将原始地图创建为 CATiledLayer。 层的层次结构就像上面这样。

Map View (CATiledLayer)
----------------------
|  Pin (CALayer)     |
|  +-------+         |
|  | image |         |
|  +-------+         |
|                    |
|     Pin (CALayer)  |
|     +-------+      |
|     | image |      |
|     +-------+      |
|                    |
----------------------

一些“图钉层”被放置在地图视图上。

缩放地图时,图钉会随地图视图一起缩放。 但我想继续缩放 pin 图层,就像 ios 中的原始地图应用一样。

有人知道好答案吗?

【问题讨论】:

【参考方案1】:

您是否为 CATiledLayer 设置了 autoresizesubviews?

[MapView setAutoresizesSubviews:YES];

然后确保 Pins 已使用 setAutoresizingMask 设置

[PinView setAutoresizingMask:UIViewAutoresizingFlexibleHeight |UIViewAutoresizingFlexibleWidth];

您可能还需要为 PinView 设置边距以将其保持在正确的位置。

希望这会有所帮助。

【讨论】:

以上是关于如何在缩放的 CALayer 中保持子层的比例的主要内容,如果未能解决你的问题,请参考以下文章

如何在正确的位置渲染 CALayer 子层

CALayer 子层在设备旋转期间不优雅

CALayer subLayer 边界舍入错误?

每次视图出现时,UIView 层的子层显示不同/随机

在缩放/变换上强制重绘 UIView 或 CALayer

CALayer 没有实现自定义 drawLayer:inContext: 方法