石英阴影绘制不正确

时间:2011-10-11 03:34:27

标签: iphone objective-c cocoa-touch

所以,我的应用程序的图像看起来像这样:

enter image description here

现在这很好,但是我正在尝试减少对图像的依赖,而是尝试动态绘制它。

好的,所以我发现这个图像内置于UIColor :( scrollViewTexturedBackgroundColor)

enter image description here

看起来很轻,但很甜蜜。我们到了那里。

现在,我在drawRect子类中重写UIView以使其变暗。

-(void)drawRect:(CGRect)rect {
    [[UIColor colorWithWhite:0.0 alpha:0.4] setFill];
    UIRectFillUsingBlendMode(rect , kCGBlendModeDarken);
}
嘿,它并不完美,但足够接近。我总是可以调整混合模式&颜色以后。现在来了困难的部分。我无法弄清楚如何正确绘制阴影。例如,我试图设置我的阴影:

enter image description here

CGContextSetShadowWithColor(ctx, CGSizeMake(0, 6), 5, [[UIColor blackColor]CGColor]);

但是,阴影不会显示。此外,我尝试保存图形状态,应用阴影,然后恢复它,但当我这样做时,阴影出现,但颜色反转(可能是由于我设置的混合模式)。显然这不是我所希望的。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

使用绘制的内容渲染阴影。如果没有放下它的实际物体,你不能只画一个阴影。如果您找到了办法,请告诉我。

我在第一张图片上看到你使用内部阴影效果。要获得类似的结果,您需要绘制一条在该区域周围投下阴影的路径。

enter image description here

在图片上,红色路径是一条bezier路径,行程为10px。我在图片和路径之间留下了一个间隙,表明路径比背景图片大。 要生成这样的路径,可以使用带有rect的bezier路径。将背景图片矩形插入负值,该值等于笔划宽度的一半。

如果实际上下文比图片大,请在绘制路径之前用图片rect剪辑它。