图层的基本使用

Main.storyboard

ViewConroller.m

//

//  ViewController.m

//  7A10.图层基本使用

//

//  Created by huan on 16/2/3.

//  Copyright © 2016 huanxi. All rights reserved.

//

 

#import "ViewController.h"

#import "UIImage+CZ.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIImageView *imageView;

@property (weak, nonatomic) IBOutlet UIView *redView;

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    //学习CALayer的属性

    

    //获取圆角图片

    UIImage *image = [UIImage cornerImageWithImageName:@"papa" cornerRadius:10 borderWidth:2 borderColor:[UIColor redColor]];

    

    //设置阴影(一定要配合透明度)

    self.redView.layer.shadowColor = [UIColor blackColor].CGColor;

    //设置阴影的透明度

    self.redView.layer.shadowOpacity = 0.5;

    //设置阴影的位置

    self.redView.layer.shadowOffset = CGSizeMake(150, 150);

    //设置内容 一般设置图片,并且的图片的数据类型为CGImageRef

    self.redView.layer.contents = (id)image.CGImage;

 

    

        /**

     *1.如果设置了masksToBoundsYes,阴影会不出来,原因,阴影也被切掉了

     *2.如果你想有圆角的效果。又想有阴影,图片本来就有圆角效果

     *3. 换句话说,自己把图片转换有圆角的图片,再显示

     */

    

}

 

-(void)test1{

    //autoLayout影响的尺寸设置

    //设置尺寸

    self.redView.layer.bounds = CGRectMake(0, 0, 150, 150);

    

    //设置边框的颜色(一定要设置宽度)

    self.redView.layer.borderColor = [UIColor blackColor].CGColor;

    //设置边框的宽度

    self.redView.layer.borderWidth = 2;

    

    //设置背景颜色

    self.redView.layer.backgroundColor = [UIColor greenColor].CGColor;

    //设置圆角效果

    self.redView.layer.cornerRadius = 10;

    //如果圆角周边的剪掉的话,设置一个属性

    self.redView.layer.masksToBounds = YES;

    //设置阴影(一定要配合透明度)

    self.redView.layer.shadowColor = [UIColor blackColor].CGColor;

    //设置阴影的透明度

    self.redView.layer.shadowOpacity = 0.5;

    //设置阴影的位置

    self.redView.layer.shadowOffset = CGSizeMake(50, 50);

    //设置内容 一般设置图片,并且的图片的数据类型为CGImageRef

    self.redView.layer.contents = (id)[UIImage imageNamed:@"papa"].CGImage;

 

}

 

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

@end

UIImage+CZ.h

#import <UIKit/UIKit.h>

 

@interface UIImage (CZ)

 

//把一张图片,裁剪成圆角的效果,可设置圆角大小、边框、边框颜色的新图片

+(UIImage *)cornerImageWithImageName:(NSString *)imageName cornerRadius:(CGFloat)cornerRadius borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor;

 

@end

UIImage+CZ.m

//

//  UIImage+CZ.m

//  7A10.图层基本使用

//

//  Created by huan on 16/2/4.

//  Copyright © 2016 huanxi. All rights reserved.

//

 

#import "UIImage+CZ.h"

 

@implementation UIImage (CZ)

 

+(UIImage *)cornerImageWithImageName:(NSString *)imageName cornerRadius:(CGFloat)cornerRadius borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor{

    //生成一张新图片

    UIImage *sourceImage = [UIImage imageNamed:imageName];

    //1.开启一个位图上下文

    UIGraphicsBeginImageContextWithOptions(sourceImage.size, NO, 0.0);

    //2.把图片画在 位图上下文

    //2.1 图片要剪裁成圆角

    CALayer *layer = [CALayer layer];//图层里有一张图片

    //图层设置大小(一定要设置)

    layer.bounds = CGRectMake(0,0, sourceImage.size.width, sourceImage.size.height);

    //设置内容

    layer.contents = (id)sourceImage.CGImage;

    

    //设置圆角

    layer.cornerRadius = cornerRadius;

    //裁剪

    layer.masksToBounds = YES;

    //边框

    layer.borderWidth = borderWidth;

    //边框的颜色

    layer.borderColor = borderColor.CGColor;

    

    [layer renderInContext:UIGraphicsGetCurrentContext()];

    //3.从位图上下文 获取新图片

    UIImage *newImg = UIGraphicsGetImageFromCurrentImageContext();

    //4.结束位图的编辑

    UIGraphicsEndImageContext();

    //5.返回新图片

    return newImg;

}

@end

运行结果

 

原文地址:https://www.cnblogs.com/Lu2015-10-03/p/5191188.html