iOS_使用UIBezierPath对象实现视图控件的立体阴影效果和半透明背景效果
说明:
- CALayer 和阴影的相关API有: shadowOpacity, shadowRadius, shadowOffset, shadowColor, shadowPath 等5个. 本篇文章要讲述的是通过设置shadowPath属性来实现特殊的UI效果
文章中尽量不使用或少使用封装, 目的是让大家清楚为了实现功能所需要的官方核心API是哪些(如果使用封装, 会在封装外面加以注释)
- 此文章由 @春雨 编写. 经 @Scott, @黑子 审核. 若转载此文章,请注明出处和作者
核心API
Class : UIBezierPath, CALayer
涉及的API:(API的官方详细注释详见本章结尾)
/** CALayer 的shadowPath属性. */
@property CGPathRef shadowPath
/** 创建UIBezierPath对象的相关类方法. */
+ (UIBezierPath *)bezierPathWithRect:(CGRect)rect
+ (UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius
+ (UIBezierPath *)bezierPathWithOvalInRect:(CGRect)rect
功能实现
1 . 椭圆形阴影效果
效果图:
2 . 半透明背景
效果图:
Code:
1 . 椭圆形阴影效果
- (void)layoutOvalShadow
{
/** 1. 创建一个UIImageView的对象. */
UIImage *image = [UIImage imageNamed:@"1.jpg"];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(70, 200