【发布时间】:2010-12-03 11:16:31
【问题描述】:
我需要沿着图像的形状绘制一条路径,使其始终匹配其在图像上的位置,而与图像比例无关。可以将其想象为 Google 地图的混合视图,其中街道名称和道路叠加在航拍图片之上。
此外,这条路径将由用户的手指移动绘制,我需要能够检索图像像素坐标上的路径关键点。用户放大以便更精确地设置路径位置。
我设法使用这种方法使其工作:
-创建一个名为 CanvasView 的自定义 UIView,它处理触摸交互并根据标志传递缩放、旋转、平移值到 UIImageView 或 PathsView(见下文):deliverToImageOrPaths。
-创建一个 UIImageView 保存基本图像。这被设置为 CanvasView 的子项
-创建一个名为 PathsView 的自定义 UIView,它跟踪 2D 路径几何并使用自定义 drawRect 绘制自身。这被设置为 UIImageView 的子级。
所以层次结构:CanvasView -> UIImageView ->PathsView
以这种方式,当 DeliverToImageOrPaths 为 YES 时,手指手势会同时转换 UIImageView 及其子 PathsView。当 deliverToImageOrPaths 为 NO 时,手势仅影响 PathsView 更改其几何形状。到目前为止一切顺利。
问题: 我遇到的问题是,在缩放基本 UIImageView (通过其 .transform 属性)时,PathsView 会使用锯齿伪影进行缩放。仍然在 PathsView 上调用 drawRect,但我猜它正在使用原始缓冲区大小执行绘图,然后进行插值。
我该如何解决这个问题?有没有更好的方法来实现这些功能?
PS:我尝试将 PathsView 图层类更改为 CATiledLayer,levelsOfDetailBias 4 和 levelsOfDetail 4。它在一定程度上解决了锯齿问题,但渲染速度慢得让人无法接受。
【问题讨论】:
标签: iphone uiimageview scaling path aliasing