CodeV

6.13-添加底部发光

底部发光创造环境光反射回你的绘图的错觉。 图6-22显示了第5章的添加此效果之前和之后的内部和外部发光示例。

图6-22

图6-22添加底部发光

与第5章中使用Quartz阴影创建的发光不同,本示例使用了ease-in-out渐变。 清单6-13创建了一个函数,该函数剪切到路径并从下往上绘制渐变。 你指定上升的百分比。 图6-22建立了它的底部发光,使用20%白色沿着外部圆角矩形路径向上40%。

清单6-13添加底部发光

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void DrawBottomGlow(UIBezierPath *path,
UIColor *color, CGFloat percent)
{
if (!path) COMPLAIN_AND_BAIL(
@"Path cannot be nil", nil);
if (!color) COMPLAIN_AND_BAIL(
@"Color cannot be nil", nil);
CGContextRef context = UIGraphicsGetCurrentContext();
if (context == NULL) COMPLAIN_AND_BAIL(
@"No context to draw into", nil);

CGRect rect = path.calculatedBounds;
CGPoint h1 = RectGetPointAtPercents(rect, 0.5f, 1.0f);
CGPoint h2 = RectGetPointAtPercents(
rect, 0.5f, 1.0f - percent);

Gradient *gradient = [Gradient
easeInOutGradientBetween:color and:
[color colorWithAlphaComponent:0.0f]];

PushDraw(^{
[path addClip];
[gradient drawFrom:h1 toPoint:h2];
});
}

本文翻译自《iOS Drawing Practical UIKit Solutions》作者:Erica Sadun,翻译:Cheng Dong。如果觉得本书不错请购买支持正版:亚马逊购买传送门,本书所有源代码可在GitHub上下载。译者虽然力求做到信,达,雅,但是由于时间仓促加之译者水平十分有限,文中难免会出现不正确,不准确,词不达意,难于理解的地方,还望各位批评指正,共同进步,谢谢。转载请注明出处。