亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

CALayer知識:創建帶陰影效果的圓角圖片圖層和創建自定義繪畫內容圖層

2019-11-14 18:38:02
字體:
來源:轉載
供稿:網友

效果如下:

KMLayerDelegate.h

1 #import <UIKit/UIKit.h>2 3 @interface KMLayerDelegate : NSObject4 5 @end

KMLayerDelegate.m

 1 #import "KMLayerDelegate.h" 2  3 @implementation KMLayerDelegate 4  5 /** 6  *  根據角度,獲取對應的弧度 7  * 8  *  @param degree 角度 9  *10  *  @return 對應的弧度11  */12 static inline double radian(double degree) {13     return degree * M_PI/180;14 }15 16 /**17  *  繪畫著色模式內容;繪畫預定寬高大小的單元格,每個單元格包含兩個半圓,分別為『左上角的上半圓』和『右下邊的下半圓』18  *19  *  @param info    信息20  *  @param context 上下文21  */22 void drawColoredPattern(void *info, CGContextRef context) {23     CGColorRef dotColor = [UIColor colorWithHue:0.0 saturation:0.0 brightness:0.0 alpha:0.8].CGColor; //圓點顏色;以色彩、飽和度、亮度和不透明度組合的顏色24     CGColorRef dotShadowColor = [UIColor orangeColor].CGColor; //圓點陰影顏色25     26     CGContextSetFillColorWithColor(context, dotColor); //設置填充色27     CGContextSetShadowWithColor(context, CGSizeMake(2.0, 2.0), 1, dotShadowColor); //設置陰影顏色;以陰影位置偏差為(2.0, 2.0)、模糊效果的 dotShadowColor 作為陰影顏色28     29     CGContextAddArc(context, 10.0, 10.0, 10.0, 0.0, radian(180.0), 1); //添加圓點;以居中點為(10.0, 10.0)、半徑為10.0、順時針畫0.0到180.0弧度的圓點(即為上半圓),注意0.0弧度為水平線左邊位置開始30     CGContextFillPath(context);31     32     CGContextAddArc(context, 30.0, 20.0, 10.0, 0.0, radian(180.0), 0); //添加圓點;以居中點為(30.0, 20.0)、半徑為10.0、逆時針畫0.0到180.0弧度的圓點(即為下半圓),注意0.0弧度為水平線左邊位置開始33     CGContextFillPath(context);34 }35 36 /**37  *  繪畫內容圖層38  *39  *  @param layer   當前圖層40  *  @param context 上下文41  */42 - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context {43     //圖層背景顏色44     CGColorRef backgroundColor = [UIColor lightGrayColor].CGColor;45     CGContextSetFillColorWithColor(context, backgroundColor);46     CGContextFillRect(context, layer.bounds);47     48     static const CGPatternCallbacks callbacks = { 0, &drawColoredPattern, NULL };49     //繪畫連續的單元格,每個單元格的內容由 drawColoredPattern 方法決定50     CGContextSaveGState(context);51     CGColorSpaceRef patternSpace = CGColorSpaceCreatePattern(NULL);52     CGContextSetFillColorSpace(context, patternSpace);53     CGColorSpaceRelease(patternSpace);54     55     CGPatternRef pattern = CGPatternCreate(NULL,56                                            layer.bounds,57                                            CGAffineTransformIdentity,58                                            40.0, //單元格的寬度59                                            40.0, //單元格的高度60                                            kCGPatternTilingConstantSpacing,61                                            true,62                                            &callbacks);63     CGFloat alpha = 1.0; //著色模式內容的不透明度64     CGContextSetFillPattern(context, pattern, &alpha);65     CGPatternRelease(pattern);66     CGContextFillRect(context, layer.bounds);67     CGContextRestoreGState(context);68 }69 70 @end

ViewController.h

1 #import <UIKit/UIKit.h>2 #import "KMLayerDelegate.h"3 4 @interface ViewController : UIViewController5 @PRoperty (strong, nonatomic) KMLayerDelegate *layerDelegate;6 7 @end

ViewController.m

 1 #import "ViewController.h" 2  3 static const CGFloat cornerRadius = 10.0; 4 @interface ViewController () 5 - (void)createShadowCornerImage:(UIImage *)image withRootLayer:(CALayer *)rootLayer; 6 - (void)createCustomDrawingLayer:(CALayer *)rootLayer; 7 - (void)layoutUI; 8 @end 9 10 @implementation ViewController11 12 - (void)viewDidLoad {13     [super viewDidLoad];14     15     [self layoutUI];16 }17 18 - (void)didReceiveMemoryWarning {19     [super didReceiveMemoryWarning];20     // Dispose of any resources that can be recreated.21 }22 23 /**24  *  創建帶陰影效果的圓角圖片圖層25  *26  *  @param image     圖片27  *  @param rootLayer 根圖層28  */29 - (void)createShadowCornerImage:(UIImage *)image withRootLayer:(CALayer *)rootLayer {30     //子圖層(圖片的陰影圖層)31     CALayer *subLayer = [CALayer layer];32     subLayer.frame = CGRectMake(40.0, 40.0, 240.0, 240.0);33     subLayer.backgroundColor = [UIColor lightGrayColor].CGColor;34     subLayer.cornerRadius = cornerRadius;35     subLayer.borderColor = [UIColor blackColor].CGColor;36     subLayer.borderWidth = 2.0;37     subLayer.shadowColor = [UIColor blackColor].CGColor; //設置陰影顏色38     subLayer.shadowOpacity = 0.7; //設置陰影不透明度39     subLayer.shadowOffset = CGSizeMake(4.0, 3.0); //設置陰影位置偏差40     subLayer.shadowRadius = 5.0; //設置陰影圓角半徑41     [rootLayer addSublayer:subLayer];42     43     //子圖層的子圖層(圖片的內容圖層)44     CALayer *imageLayer = [CALayer layer];45     imageLayer.frame = subLayer.bounds;46     imageLayer.contents = (id)image.CGImage;47     imageLayer.masksToBounds = YES; //設置標示剪切界限;內容圖層需設置為 YES,才能有圓角效果48     imageLayer.cornerRadius = cornerRadius;49     CGAffineTransform affineTransform = CGAffineTransformConcat(CGAffineTransformMakeScale(0.8, 0.8), CGAffineTransformMakeRotation(M_PI_4/9)); //合并縮放和旋轉效果;以0.8比例居中縮放,以45度/9=5度的角度順時針旋轉50     imageLayer.affineTransform = affineTransform;51     [subLayer addSublayer:imageLayer];52 }53 54 /**55  *  創建自定義繪畫內容圖層56  *57  *  @param rootLayer 根圖層58  */59 - (void)createCustomDrawingLayer:(CALayer *)rootLayer {60     CALayer *drawingLayer = [CALayer layer];61     drawingLayer.frame = CGRectMake(40.0, 320.0, 240.0, 240.0);62     drawingLayer.backgroundColor = [UIColor orangeColor].CGColor; //背景顏色會被內容圖層遮住,所以最終呈現的以內容圖層為準63     drawingLayer.masksToBounds = YES; //設置標示剪切界限;內容圖層需設置為 YES,才能有圓角效果64     drawingLayer.cornerRadius = cornerRadius;65     drawingLayer.borderColor = [UIColor blackColor].CGColor;66     drawingLayer.borderWidth = 2.0;67     drawingLayer.shadowColor = [UIColor darkGrayColor].CGColor; //設置陰影顏色68     drawingLayer.shadowOpacity = 0.8; //設置陰影不透明度69     drawingLayer.shadowOffset = CGSizeMake(8.0, 6.0); //設置陰影位置偏差70     drawingLayer.shadowRadius = 5.0; //設置陰影圓角半徑71     72     _layerDelegate = [KMLayerDelegate new];73     drawingLayer.delegate = _layerDelegate;74     [drawingLayer setNeedsDisplay]; //這里必須調用方法 setNeedsDisplay,才會觸發委托代理方法 drawLayer:75     [rootLayer addSublayer:drawingLayer];76 }77 78 - (void)layoutUI {79     //根圖層80     CALayer *rootLayer = self.view.layer;81     rootLayer.backgroundColor = [UIColor cyanColor].CGColor;82     rootLayer.cornerRadius = 40.0;83     84     [self createShadowCornerImage:[UIImage imageNamed:@"Emoticon_tusiji_icon2"]85                     withRootLayer:rootLayer];86     [self createCustomDrawingLayer:rootLayer];87 }88 89 @end

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性xxxx在线播放| 国内精品模特av私拍在线观看| 亚洲图片欧洲图片av| 国语自产精品视频在线看一大j8| 亚洲一区二区三区四区视频| 中文字幕日韩av| 色噜噜久久综合伊人一本| 欧美一区二粉嫩精品国产一线天| 9.1国产丝袜在线观看| 亚洲自拍在线观看| 91在线免费看网站| 91色在线观看| 欧美日韩国产成人在线| 国模精品系列视频| 国产精品视频精品| 国产成人精品国内自产拍免费看| 欧美午夜性色大片在线观看| 久久久天堂国产精品女人| 欧美精品在线免费| 国产va免费精品高清在线观看| 国产精品亚洲аv天堂网| 久久久久久久影院| 国产精品视频专区| 欧美中文字幕在线播放| 日韩精品视频在线| 91久久久久久久一区二区| 国产在线观看一区二区三区| 91精品视频网站| 91午夜理伦私人影院| 国产精品福利网| 国内精品久久久久伊人av| 久久久人成影片一区二区三区| 国产精品久久久久久av下载红粉| 亚洲欧美另类自拍| 俺去亚洲欧洲欧美日韩| 亚洲国产日韩欧美在线99| 日本成人精品在线| 精品无人区太爽高潮在线播放| 97在线观看免费高清| 国产成人精彩在线视频九色| 欧美区在线播放| www.欧美精品一二三区| 久久久久久久久综合| 国产日产欧美a一级在线| 国产欧美日韩精品丝袜高跟鞋| 日韩欧美aaa| 亚洲成人av中文字幕| 欧美视频在线免费| 国产精品一二三在线| 精品视频在线播放免| 国产99久久精品一区二区| 亚洲欧洲黄色网| 成人信息集中地欧美| 国产91露脸中文字幕在线| 亚洲日韩中文字幕在线播放| 欧美成人精品激情在线观看| 91成人精品网站| 日韩精品视频在线| 国产成人+综合亚洲+天堂| 精品日韩中文字幕| 永久555www成人免费| 中文字幕欧美专区| 国产成人精品一区二区三区| 日韩精品在线免费播放| 国产精品都在这里| 国产精品久久久久久久久久久不卡| 国产日产久久高清欧美一区| 亚洲国产精品久久久久久| 欧美国产视频一区二区| 欧美一二三视频| 国产精品一区二区久久| 国产精品99久久久久久白浆小说| 日韩精品久久久久| 欧美亚洲另类视频| 欧美性xxxx18| 日韩一区二区三区在线播放| 欧美xxxx18性欧美| 中文字幕日韩欧美在线视频| 欧美成年人视频| 日韩av电影在线播放| 久久精品中文字幕| 这里只有精品视频在线| 日韩中文字幕免费| 国产拍精品一二三| 68精品国产免费久久久久久婷婷| 亚洲高清免费观看高清完整版| 91九色国产社区在线观看| 亚洲人成电影网站色…| 亚洲视频在线播放| 久久久国产一区二区| 国产在线精品一区免费香蕉| 久久久久久久一区二区三区| 欧美亚洲在线观看| 78色国产精品| 欧美精品成人91久久久久久久| 高清亚洲成在人网站天堂| 久久理论片午夜琪琪电影网| 国产精品日韩专区| 一个人看的www久久| 亚洲成人xxx| 日本电影亚洲天堂| 中文字幕亚洲欧美日韩高清| 亚洲视频电影图片偷拍一区| 亚洲精品aⅴ中文字幕乱码| 在线视频亚洲欧美| 亚洲色图17p| 日韩欧美在线播放| 国产精品久久久久77777| 亚洲aaaaaa| 亚洲已满18点击进入在线看片| 久久国产一区二区三区| 91精品国产综合久久香蕉922| 久久精品人人爽| 国产精品美腿一区在线看| 国产精品露脸av在线| 日韩电影在线观看免费| 日韩在线中文视频| 91精品国产91| 欧美极品少妇xxxxⅹ喷水| 国产欧美一区二区三区久久| 96pao国产成视频永久免费| 国产精品久久久久久中文字| 欧美黄色成人网| 久久久久久一区二区三区| 欧美另类在线播放| 97久久精品人搡人人玩| 日韩禁在线播放| 成人免费淫片aa视频免费| 色噜噜狠狠色综合网图区| 欧美午夜女人视频在线| 欧美专区福利在线| 亚洲最大福利网| 日韩成人在线网站| 91久久久久久久| 亚洲欧美国产一本综合首页| 亚洲久久久久久久久久| 亚洲人在线视频| 国模视频一区二区| 韩国19禁主播vip福利视频| 国产免费亚洲高清| 欧美成人午夜激情视频| 亚洲第一综合天堂另类专| 国产精品美女视频网站| 国产亚洲精品久久| 亚洲视频视频在线| 国产精品午夜国产小视频| 欧美大片网站在线观看| 国产精品劲爆视频| 欧亚精品中文字幕| 亚洲美女激情视频| 欧美在线一区二区视频| 国产精品成熟老女人| 中文字幕日韩欧美| 亚洲精品短视频| 亚洲欧洲免费视频| 久久色精品视频| 欧美国产日韩免费| 欧美激情日韩图片| 亚洲欧美日韩精品| 久久久久国色av免费观看性色| 久久久久久久国产精品视频| 国产日韩欧美自拍| 日韩专区在线观看| 亚洲自拍偷拍视频|