IOS CALayer,图片圆角阴影效果

来源:互联网 发布:阿里云幕布拍照要求 编辑:程序博客网 时间:2024/06/10 03:59
////  ViewController.m//  图层的基本使用//#import "ViewController.h"#import "UIImage+CZ.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIImageView *imgView;@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.        //获取圆角图片    UIImage *image = [UIImage cornerImageWithImageName:@"papa" cornerRadius:10 borderWidth:2 borderColor:[UIColor redColor]];        // 学习CALayer的属性        //autoLayout影响的尺寸设置    // 设置阴影颜色    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.如果你设置了masksToBounds为YES,阴影是不出,原因,阴影也被切掉了     *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(150, 150);        // 设置内容 一般设置图片,并且的图片的数据类型为CGImageRef    self.redView.layer.contents = (id)[UIImage imageNamed:@"papa"].CGImage;        /*     *1.如果你设置了masksToBounds为YES,阴影是不出,原因,阴影也被切掉了     *2.如果你想有圆角的效果,又想有阴影,图片本来就有圆角效果     *3.获取话说:自己把图片转换成有圆角的图片,再显示     */}- (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//  图层的基本使用//#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];//图层里有一张图片    #warning 图层的大小一定要设置    //图层设置大小    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



0 0
原创粉丝点击