iphone - 如何在 UIView 下绘制阴影?

我正在尝试在 Cocoa Touch 中的 UIView 的底部边缘下绘制阴影。我知道应该使用 CGContextSetShadow() 来绘制阴影,但是 Quartz 2D 编程指南有点含糊:

  1. 保存图形状态。
  2. 调用函数CGContextSetShadow,传递适当的值。
  3. 执行所有要应用阴影的绘图。
  4. 恢复图形状态

我在 UIView 子类中尝试了以下内容:

- (void)drawRect:(CGRect)rect {
    CGContextRef currentContext = UIGraphicsGetCurrentContext();
    CGContextSaveGState(currentContext);
    CGContextSetShadow(currentContext, CGSizeMake(-15, 20), 5);
    CGContextRestoreGState(currentContext);
    [super drawRect: rect];
}

..但这对我不起作用,我对 (a) 下一步要去哪里和 (b) 是否需要对我的 UIView 做任何事情完成这项工作?

最佳答案

一个更简单的方法是在初始化时设置 View 的一些层属性:

self.layer.masksToBounds = NO;
self.layer.shadowOffset = CGSizeMake(-15, 20);
self.layer.shadowRadius = 5;
self.layer.shadowOpacity = 0.5;

你需要导入 QuartzCore。

#import <QuartzCore/QuartzCore.h>

https://stackoverflow.com/questions/805872/

相关文章:

ios - 如何删除 UITableView 中的空单元格?

objective-c - objectForKey 和 valueForKey 的区别?

objective-c - 如何使用 NSTimer?

objective-c - 如何按比例缩放 UIImageView?

objective-c - 如何纯粹用 C 编写 iOS 应用程序

objective-c - "sending ' 常量 NSString * ' to parame

objective-c - 如何在 Objective-C 中反转 NSArray?

ios - 在 Objective-C 中使用 GCD 的 dispatch_once 创建单例

iphone - 按下时 UILongPressGestureRecognizer 被调用两次

objective-c - Xcode 的隐藏功能