iOS 如何让阴影和圆角共存

前言

首先,大家应该知道,在一个view上面,设置了layer.masksToBounds=YES,意味着view可以有圆角,但是无法显示阴影,若设置layer.masksToBounds=NO,则无法显示圆角,但是可以显示阴影。
这是个冲突,想要两者共存,在这里教大家一种比较简单的方法(高级的处理方式也有,但笔者觉得在不影响新能的前提下,这种方式是可取的)。

解决方式

想要做成的效果如下图1-1为例子:


图1-1

而我采取的做法第一步:给view增加个父view,专门用来显示阴影,如下图1-2


图1-2

第二步,给view设置圆角,如下图1-3:


图1-3

设置完之后,效果图如下图1-4


图1-4

文章至此结束,请大家多多指教,共同进步~


关于xib中view设置阴影

我们需要自定义一个属性,可以通过给CALayer分类来增加属性(如果xib中的view需要设置边框颜色,同理也需要增加一个属性,下面类一同给出自定义的阴影颜色和边框颜色)

CALayer+FKCategory.h

#import 

NS_ASSUME_NONNULL_BEGIN

@interface CALayer (FKCategory)
//注意:如果你想设置圆角的同时设置阴影,那你就先设置阴影后设置圆角
@property(nonatomic, strong) UIColor *borderUIColor;
@property(nonatomic, strong) UIColor *shadowUIColor;
@end

NS_ASSUME_NONNULL_END

CALayer+FKCategory.m

#import "CALayer+FKCategory.h"

@implementation CALayer (FKCategory)
- (void)setBorderUIColor:(UIColor *)color
{
    self.borderColor = color.CGColor;
}
- (UIColor*)borderUIColor
{
    return [UIColor colorWithCGColor:self.borderColor];
}
-(void)setShadowUIColor:(UIColor*)color
{
    self.shadowColor = color.CGColor;
}
 
-(UIColor *)shadowUIColor
{
    return [UIColor colorWithCGColor:self.shadowColor];
}
@end

你可能感兴趣的:(iOS 如何让阴影和圆角共存)