我想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];
}
Run Code Online (Sandbox Code Playgroud)
..但这对我不起作用,我有点不知道(a)下一步该去哪里,(b)如果有什么我需要做的让我UIView做这个工作?
我有一个要求,我必须在视图的框架之外绘制视图的阴影.我们已经有了复杂的视图层次结构/分层,现在无法更改视图的框架和布局以适应viewController视图边界内的阴影.
1.我有点关注我是否可以通过以下方法在视图之外绘制阴影:
" 你还可以创建一个投影,它将基于视图中绘制的任何内容的alpha分量.通常这会在视图边缘产生阴影. 这个示例代码在UILabel上:
label.layer.shadowColor = [UIColor blackColor].CGColor;
label.layer.shadowOpacity = 1.0;
label.layer.shadowRadius = 5.0;
label.layer.shadowOffset = CGSizeMake(0, 3);
label.clipsToBounds = NO;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您需要将clipToBounds设置为NO才能显示视图框外的阴影.接下来,我将向您展示如何实际组合圆角和阴影,因为我确信这就是您现在真正想要做的事情."
参考:http://bynomial.com/blog/?p = 52
2.现在,我遇到了一些线索,告诉我们不鼓励在视图外部绘制阴影.但没有给出任何解释: 我怎样才能画出超出UIView界限的阴影?
是否有任何理由为什么我们不应该在视图的框架外绘制阴影(CALayer)?或者,第一种方法是否可以?
谢谢,拉吉