2011-12-07 65 views
0

我有一个将PDF渲染到CATiledLayer的视图。这很好。CATiledLayer阴影渲染不正确

现在我试图阴影添加到视图,所以我做了平常:

tiledLayer.masksToBounds = NO; 
    tiledLayer.shadowOffset = CGSizeMake(5, 5); 
    tiledLayer.shadowRadius = 5; 
    tiledLayer.shadowOpacity = 0.5; 
    tiledLayer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath; 

但是我所看到的渲染不正确。看起来正在发生的事情是,当瓷砖被绘制时,为每个瓷砖绘制阴影。一旦所有瓷砖都被绘制出来,最终产品看起来是正确的,并且在正确的位置有一个阴影,但是中间渲染会让人分心。

如何在CATiledLayer上使用阴影?

回答

1

您应该将您的CATiledLayer封装到容器图层中,并将这些影子属性应用于它。通过调用self.bounds来判断,您可能已经将CATiledLayer嵌入到视图的图层中,在这种情况下(除非需要masksToBounds),则可以直接将阴影属性应用于该图层。

-1

为每个图块绘制阴影是非常合理的,这正是您要求它执行的操作。我假设你已经在包含它们的某种父视图中加载了你的图块(通常是一个UIScrollView)。您应该在包含视图的位置设置阴影。

+0

您使用过CATiledLayer吗?它不代表一个瓦片 - 它将其内容*绘制为瓦片。 –

+0

我有,我用它们在应用程序中进行PDF渲染。从这个应用到每个瓷砖的影子的声音看起来不正确,我可能不完全清楚,但是我从OP的文章中了解到,他看到每个瓷砖创建时呈现的投影。但他真正想要的是他的整个平铺区域都有阴影,我会想象将阴影应用于包含视图的图层会产生这些影响。你发布的答案听起来像一个非常相似的方法。我错过了什么? –

+0

也许我误解了“你告诉它要做的事情”。当他给它一个包含视图边界的阴影路径时,描述的行为如何有意义? –