我试图用圆角和阴影显示一个UIView.但问题是maskToBounds属性只适用于任何一种情况.
如果maskToBounds为YES,则圆角显示,否则为阴影显示.这是实现,但它只显示没有阴影的圆角:
[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"blue_gradient.jpeg"]]]; self.view.layer.masksToBounds = YES; self.view.layer.opaque = NO; self.view.layer.cornerRadius = 15.0f; self.view.layer.shadowColor = [UIColor blackColor].CGColor; self.view.layer.shadowRadius = 5.0; self.view.layer.shadowOffset = CGSizeMake(3.0,3.0); self.view.layer.shadowOpacity = 0.9f;
想法!
注意:我已经阅读并实现了以下线程中的代码,但它不起作用:
UIView with rounded corners and drop shadow?
更新1:
我试图创建两个单独的视图.一个将代表半径,一个将代表阴影.问题是在半径视图的顶部创建阴影,如下面的屏幕截图所示:
H
ere is the code: self.view.layer.masksToBounds = YES; self.view.layer.opaque = NO; self.view.layer.cornerRadius = 15.0f; // self.view.backgroundColor = [UIColor clearColor]; self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blue_gradient.jpeg"]]; // UIView *shadowView = [[UIView alloc] initWithFrame:CGRectMake(0,100,100)]; shadowView.layer.shadowColor = [UIColor blackColor].CGColor; shadowView.layer.shadowRadius = 2.0; shadowView.backgroundColor = [UIColor clearColor]; shadowView.layer.shadowOffset = CGSizeMake(3.0,3.0); shadowView.layer.shadowOpacity = 0.9f; shadowView.layer.shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(0,100)].CGPath; [self.view addSubview:shadowView];
更新2:
倒置仍然不行.没有创建圆角.
UIView *roundCornerView = [[UIView alloc] initWithFrame:CGRectMake(0,100)]; roundCornerView.layer.masksToBounds = YES; roundCornerView.layer.opaque = NO; roundCornerView.layer.cornerRadius = 15.0f; self.view.layer.shadowColor = [UIColor blackColor].CGColor; self.view.layer.shadowRadius = 2.0; //self.view.backgroundColor = [UIColor clearColor]; self.view.layer.shadowOffset = CGSizeMake(3.0,3.0); self.view.layer.shadowOpacity = 0.9f; self.view.layer.shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(0,100)].CGPath; [self.view addSubview:roundCornerView];
解:
UIView *roundCornerView = [[UIView alloc] initWithFrame:CGRectMake(0,100)]; roundCornerView.layer.masksToBounds = YES; roundCornerView.layer.opaque = NO; roundCornerView.layer.cornerRadius = 15.0f; roundCornerView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blue_gradient.jpeg"]]; self.view.layer.shadowColor = [UIColor blackColor].CGColor; self.view.layer.shadowRadius = 2.0; self.view.backgroundColor = [UIColor clearColor]; self.view.layer.shadowOffset = CGSizeMake(3.0,3.0); self.view.layer.shadowOpacity = 0.9f; //self.view.layer.shadowPath = [UIBezierPath // bezierPathWithRect:CGRectMake(0,100)].CGPath; [self.view addSubview:roundCornerView];
解决方法
创建两个视图. 一个有阴影(并且不要忘记设置shadowPath) 您可以在其中添加一个带有cornerRadius和maskToBounds的子视图.