IOS CALayer的使用

來源:互聯網
上載者:User

CALayer(層)是螢幕上的一個矩形地區,在每一個UIView中都包含一個根CALayer,在UIView上的所有視覺效果都是在這個Layer上進行的。

CALayer外形特徵主要包括:

1、層的大小尺寸

2、背景色

3、內容(可以填充圖片或者使用Core Graphics繪製的內容)

4、矩形是否使用圓角

5、矩形是否有陰影

Layer有很多種,最常用也是最基本的是CALayer,當然還包括其他的子類:

CAScrollerLayer 簡化顯示層的一部分

CATextLayer    文本層

CAGradientLayer、CAShapeLayer等等

使用層之前,需要在項目中引入QuartzCore.framework架構

執行個體:

建立XCode項目LayerSample,匯入QuartzCore.famework

在LayerSampleViewController.h檔案中引入:

#import <QuartzCore/QuartzCore.h>

LayerSampleViewController.m檔案,代碼:
#import "LayerSampleViewController.h"@implementation LayerSampleViewController- (void)loadView {    UIView *rootView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
    rootView.backgroundColor = [UIColor whiteColor];
    self.view = rootView;    [rootView release];    //載入layer    backLayer = [CALayer layer];    backLayer.backgroundColor = [UIColor orangeColor].CGColor;    backLayer.bounds = CGRectMake(10, 10, 1004, 728); //設定layer的地區    backLayer.position = CGPointMake(1024/2, 768/2-10); //設定layer座標    [self.view.layer addSublayer:backLayer];}- (void)dealloc {    [super dealloc];}@end

運行程式:

為了區分背景UIView,我將UIView的背景色設定為白色,backLayer的背景色設定為橘黃色。

是一個矩形地區,如果設定矩形的四個角是橢圓角,可以添加屬性:

backLayer.cornerRadius = 20.0; //矩形橢圓角的弧度半徑

運行程式後,效果

添加帶陰影的子Layer(層),代碼:

     //添加子layer    CALayer *cyanLayer = [CALayer layer];    cyanLayer.backgroundColor = [UIColor cyanColor].CGColor;    cyanLayer.bounds = CGRectMake(0, 0, 300, 300);    cyanLayer.position = CGPointMake(180, 180);    cyanLayer.shadowOffset = CGSizeMake(0, 3); //設定陰影的位移量    cyanLayer.shadowRadius = 10.0;  //設定陰影的半徑    cyanLayer.shadowColor = [UIColor blackColor].CGColor; //設定陰影的顏色為黑色    cyanLayer.shadowOpacity = 0.9; //設定陰影的不透明度    [backLayer addSublayer:cyanLayer];

運行:

給子Layer添加圖片

//添加子image layer

    UIImage *image = [UIImage imageNamed:@"feiche.jpg"];    CALayer *imageLayer = [CALayer layer];    imageLayer.frame = CGRectMake(100, 100, image.size.width, image.size.height);    imageLayer.contents = (id) image.CGImage;    imageLayer.shadowOffset = CGSizeMake(0, 3); //設定陰影的位移量    imageLayer.shadowRadius = 10.0;  //設定陰影的半徑    imageLayer.shadowColor = [UIColor blackColor].CGColor; //設定陰影的顏色為黑色    imageLayer.shadowOpacity = 0.9; //設定陰影的不透明度    [backLayer addSublayer:imageLayer];

運行效果,

 

圖片加邊框,代碼:

imageLayer.borderColor = [UIColor grayColor].CGColor;  //邊框顏色imageLayer.borderWidth = 2.0;  //邊框寬度

運行效果:

設定圖片為橢圓角,代碼:

imageLayer.cornerRadius = 10.0;  //設定layer圓角半徑imageLayer.masksToBounds = YES;  //隱藏邊界

運行效果:

但是由於設定masksToBounds 屬性為true所以Layer的陰影製作效果也就沒有了。

之前我都是將圖片另外在做有陰影製作效果的圖片,這樣顯的比較真實,如果陰影部分只是填充邊框即可,可以採用兩個Layer來實現陰影製作效果,代碼:

    UIImage *image = [UIImage imageNamed:@"feiche.jpg"];    //陰影layer    CALayer *shadowLayer = [CALayer layer];    shadowLayer.frame = CGRectMake(100, 100, image.size.width, image.size.height);    shadowLayer.backgroundColor = [UIColor blueColor].CGColor;    shadowLayer.shadowOffset = CGSizeMake(0, 3);    shadowLayer.cornerRadius = 10.0;    shadowLayer.shadowRadius = 10.0;    shadowLayer.shadowColor = [UIColor blackColor].CGColor; //設定陰影的顏色為黑色    shadowLayer.shadowOpacity = 1.0; //設定陰影的不透明度    [backLayer addSublayer:shadowLayer];        //添加子image layer    CALayer *imageLayer = [CALayer layer];    imageLayer.frame = CGRectMake(100, 100, image.size.width, image.size.height);    imageLayer.contents = (id) image.CGImage;    imageLayer.cornerRadius = 10.0;  //設定layer圓角半徑    imageLayer.masksToBounds = YES;  //隱藏邊界    imageLayer.borderColor = [UIColor grayColor].CGColor;  //邊框顏色    imageLayer.borderWidth = 2.0;    [backLayer addSublayer:imageLayer];

運行後效果:

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.