1.设置圆角矩形
UIView *dropView = [[UIView alloc]initWithFrame:CGRectMake(30, 30, 300, 50)];
dropView.backgroundColor=[[UIColor whiteColor] colorWithAlphaComponent:0.8];
dropView.layer.cornerRadius = 8;
dropView.layer.masksToBounds = YES;
- 这里masksToBounds或者clipsToBounds的设置是对父视图设置,设置后对子视图超出部分裁减掉(否则子视图还是会遮住圆角)。
2.设置阴影:
//阴影颜色
label.shadowColor = [UIColor redColor];
//阴影偏移 x,y为正表示向右下偏移
label.shadowOffset = CGSizeMake(10, 10);
- 在通过这样的方式设置阴影时,必须把父视图的masksToBounds属性关掉,因为阴影设置的方式就是加offset给超出视图部分设置颜色来实现的,一旦不让子视图超出,阴影也就看不出了。
3.圆角+阴影
如果上面的方法一起用,把masksToBounds开了,阴影无法显示,关了的话其上的View又会遮住圆角。解决的方式只能是再加一层view。
UIView *infoView = [[UIView alloc] initWithFrame:self.view.bounds];
infoView.backgroundColor = HexRGB(0xffffff);
infoView.layer.cornerRadius = kRealWidth(10);
infoView.layer.masksToBounds = YES;
UIView *subView = [[UIView alloc] initWithFrame:infoView.bounds];
CALayer *subLayer=subView.layer;
subLayer.shadowColor = [UIColor greenColor].CGColor;
subLayer.shadowOffset = CGSizeMake(kRealWidth(12), kRealWidth(7));
subLayer.shadowOpacity = 0.5;
subLayer.shadowRadius = kRealWidth(10);
[self.view addSubview:subView];
[subView addSubview:infoView];