CALayer简单应用——带阴影的icon

来源:互联网 发布:海岛奇兵21本升级数据 编辑:程序博客网 时间:2024/05/15 23:07

原理:正常情况下是在一个图层上既设置icon,也设置阴影就能达到要求;但是这样做会发现阴影不见了...。原因是设置圆形图层需要把暴露在该图层外子图层部分切割掉( self.iconLayer.masksToBounds = YES;   在设置图片时会重新绘制一个图层来装图片(被切割后就变成圆的了),而阴影自然也是属于在该图层外的部分,顺理成章的也被切割掉了....  。所以要同时实现这两个功能,可以换一个角度想:设置两个图层,一个专门装圆形图片,一个专门装圆形图片的阴影部分。


#import "ViewController.h"

#define IconWidth 150


@interface ViewController ()

@property (nonatomic,strong)CALayer *iconLayer;

@property (nonatomic,strong)CALayer *shadowLayer;


@end


@implementation ViewController


- (void)viewDidLoad {

    [superviewDidLoad];

    self.view.backgroundColor = [UIColorwhiteColor];

   

    self.shadowLayer = [CALayerlayer];

    self.shadowLayer.bounds =CGRectMake(0,0,IconWidth,IconWidth);

注:设置阴影层的时候一定要设置backgroundColor,不设置的话不会显示阴影(原因还没查到....).

    self.shadowLayer.backgroundColor = [UIColorwhiteColor].CGColor;

    self.shadowLayer.cornerRadius =IconWidth/2.0f;

    self.shadowLayer.position =self.view.center;

    self.shadowLayer.shadowColor = [UIColorblackColor].CGColor;

    self.shadowLayer.shadowOffset =CGSizeMake(4.0f,4.0f);

    self.shadowLayer.shadowOpacity =0.8f;

    [self.view.layeraddSublayer:self.shadowLayer];

    

    self.iconLayer = [CALayerlayer];

    self.iconLayer.contents = (__bridgeid_Nullable)([UIImageimageNamed:@"start.jpeg"].CGImage);

    self.iconLayer.bounds =CGRectMake(0,0,IconWidth,IconWidth);

 

    self.iconLayer.position =self.shadowLayer.position;

    self.iconLayer.cornerRadius =IconWidth/2.0f;

    self.iconLayer.masksToBounds =YES;

    [self.view.layeraddSublayer:self.iconLayer];

}

@end

效果图:


0 0
原创粉丝点击