CALayer1.0

除了UIImageView可以承载图片,可以使用CALayer对象来展示图片。

CALayer *sublalyer = [CALayer layer]; //获取一个新的CALayer实例

    sublalyer.backgroundColor = [UIColor purpleColor].CGColor;  //颜色

    sublalyer.shadowOffset = CGSizeMake(10, 10);    //阴影的偏差值,

    sublalyer.shadowRadius = 3.0;   //阴影的半径(效果是layer和shadow的距离),

    sublalyer.shadowColor = [UIColor blackColor].CGColor;

    sublalyer.shadowOpacity = 0.8;  //shadow的透明度

    sublalyer.frame = CGRectMake(130, 130, 128, 192); //子层的frame值

    [self.view.layer addSublayer:sublalyer];    //然后把新的层add到view的层里。

    //新建imagelayer放置图片,图片的大小会自动压缩来适应CALayer

    CALayer *imageLayer = [CALayer layer];

    imageLayer.frame = sublalyer.bounds;

    imageLayer.cornerRadius = 20.0;

    sublalyer.cornerRadius = 20.0;

    imageLayer.contents = (id)[UIImage imageNamed:@"buff.png"].CGImage;

    imageLayer.masksToBounds = YES;

    [sublalyer addSublayer:imageLayer];

    //使用一个UIView对象的CAlayer时候,Contents内容不会随着layer大小压缩,而是保持原样,contents可以是CGImage,还可以是另一个CALayer对象。

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, 50, 100)];

    label.backgroundColor = [UIColor blackColor];

    label.layer.backgroundColor = [UIColor greenColor].CGColor;

    label.layer.contents =(id)[UIImage imageNamed:@"buff.png"].CGImage;

    [self.view addSubview:label];

原文地址:https://www.cnblogs.com/longtaozi/p/3838483.html