现在很多的页面中多半会使用阴影效果,给人一种凸出感,在开发中的UIView提供了此类属性值。
代码如下:
UIView* bodyView = [[UIView alloc] initWithFrame:CGRectMake(30, 200, [UIScreen mainScreen].bounds.size.width - 60, 200)];
bodyView.backgroundColor = [UIColor whiteColor];
bodyView.layer.masksToBounds = NO;//显示阴影,必须为NO
bodyView.layer.contentsScale = [UIScreen mainScreen].scale;
/**
*
* 给shadowOpacity属性一个大于默认值(也就是0)的值,阴影就可以显示在任意图层之下。shadowOpacity是一个必须在0.0(不可见)和
* 1.0(完全不透明)之间的浮点数。如果设置为1.0,将会显示一个有轻微模糊的黑色阴影稍微在图层之上。若要改动阴影的表现,你可以使用
* CALayer的另外三个属性:shadowColor,shadowOffset和shadowRadius。
*
*/
bodyView.layer.shadowOpacity = 0.75f;
/**
* shadowRadius属性控制着阴影的模糊度,当它的值是0的时候,阴影就和视图一样有一个非常确定的边界线。当值越来越大的时候,
* 边界线看上去就会越来越模糊和自然。苹果自家的应用设计更偏向于自然的阴影,所以一个非零值再合适不过了。
*/
bodyView.layer.shadowRadius = 4.0f;
/**
* 阴影颜色
*/
bodyView.layer.shadowColor = [UIColor lightGrayColor].CGColor;
/**
* shadowOffset属性控制着阴影的方向和距离。它是一个CGSize的值,宽度控制这阴影横向的位移,高度控制着纵向的位移。
* shadowOffset的默认值是 {0, -3},意即阴影相对于Y轴有3个点的向上位移。
*/
bodyView.layer.shadowOffset = CGSizeMake(0, 0);
bodyView.layer.shadowPath = [UIBezierPath bezierPathWithRect:bodyView.bounds].CGPath;
//设置缓存
bodyView.layer.shouldRasterize = YES;
//设置抗锯齿边缘
bodyView.layer.rasterizationScale = [UIScreen mainScreen].scale;
bodyView.layer.cornerRadius = 6.0f;
[self.view addSubview:bodyView];
效果如下: