iOS设置圆角矩形和阴影效果

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];

你可能感兴趣的:(iOS设置圆角矩形和阴影效果)