我正在尝试UIView在Cocoa Touch 的底部边缘下方绘制阴影。我知道我应该CGContextSetShadow()用来绘制阴影,但是Quartz 2D编程指南有点模糊:保存图形状态。调用该函数CGContextSetShadow,并传递适当的值。执行要向其应用阴影的所有图形。恢复图形状态我在UIView子类中尝试了以下方法:- (void)drawRect:(CGRect)rect { CGContextRef currentContext = UIGraphicsGetCurrentContext(); CGContextSaveGState(currentContext); CGContextSetShadow(currentContext, CGSizeMake(-15, 20), 5); CGContextRestoreGState(currentContext); [super drawRect: rect];}..但这对我不起作用,我对(a)接下来要去哪里和(b)是否需要做些什么来完成UIView这项工作感到有些困惑?
3 回答
萧十郎
TA贡献1815条经验 获得超13个赞
在当前代码中,保存GState当前上下文的,将其配置为绘制阴影..并将其还原到配置为绘制阴影之前的状态。然后,最后,您调用超类的实现drawRect:。
任何应受阴影设置影响的绘图都需要在之后进行
CGContextSetShadow(currentContext, CGSizeMake(-15, 20), 5);
但是之前
CGContextRestoreGState(currentContext);
因此,如果您希望将超类drawRect:包裹在一个阴影中,那么如果您这样重新排列代码又如何呢?
- (void)drawRect:(CGRect)rect {
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSaveGState(currentContext);
CGContextSetShadow(currentContext, CGSizeMake(-15, 20), 5);
[super drawRect: rect];
CGContextRestoreGState(currentContext);
}
- 3 回答
- 0 关注
- 713 浏览
添加回答
举报
0/150
提交
取消