所以,我的应用程序的图像如下所示:
现在这一切都很好,但我正在尝试减少对图像的依赖,而是尝试动态绘制它。
好的,所以我发现这个图像内置于 UIColor
中:(scrollViewTexturedBackgroundColor)
看起来有点轻,但很甜。我们快到了。
现在,我在 UIView
子类中重写 drawRect
,使其变暗一点。
-(void)drawRect:(CGRect)rect {
[[UIColor colorWithWhite:0.0 alpha:0.4] setFill];
UIRectFillUsingBlendMode(rect , kCGBlendModeDarken);
}
嘿,它并不完美,但已经足够接近了。我以后随时可以调整混合模式和颜色。现在是最困难的部分。我不知道如何正确绘制阴影。例如,我尝试像这样设置我的阴影:
CGContextSetShadowWithColor(ctx, CGSizeMake(0, 6), 5, [[UIColor blackColor]CGColor]);
但是,阴影不显示。另外,我尝试保存图形状态,应用阴影,然后恢复它,但是当我这样做时,阴影出现但颜色相反(可能是由于我设置的混合模式)。显然这不是我所希望的。
有什么想法吗?
最佳答案
阴影是用绘制的东西渲染的。你不能只画一个阴影,而没有实际的物体来转换它。如果您找到方法,请告诉我。
我在第一张图片上看到你使用了内阴影效果。要获得类似的结果,您需要绘制一条在该区域周围转换阴影的路径。
图中红色路径是一条描边为10px的贝塞尔曲线路径。我在图片和路径之间留了一个间隙,以显示路径比背景图片大。 要生成这样的路径,您可以使用带有 rect 的贝塞尔路径。将背景图片矩形插入等于描边宽度一半的负值。
如果实际上下文比图片大,请在绘制路径之前将其与图片矩形一起裁剪。
关于iphone - quartz 阴影无法正确绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7721132/