先上效果圖:
CALayer系列.gif
CGContextRef旺坠、UIBezierPath、文本屬性Attributes.gif
一扮超、CAEmitterLayer 粒子屬性
//設(shè)置發(fā)射器
CAEmitterLayer * _snowEmitter=[[CAEmitterLayer alloc]init];
//發(fā)射器在xy平面的中心位置
_snowEmitter.emitterPosition=CGPointMake(self.view.frame.size.width/2,self.view.frame.size.height/2);
//發(fā)射器的尺寸大小
_snowEmitter.emitterSize=CGSizeMake(20, 20);
//發(fā)射器的渲染模式
/*
kCAEmitterLayerUnordered //這種模式下取刃,粒子是無序出現(xiàn)的,多個發(fā)射源將混合
kCAEmitterLayerOldestFirst //這種模式下出刷,聲明久的粒子會被渲染在最上層
kCAEmitterLayerOldestLast //這種模式下璧疗,年輕的粒子會被渲染在最上層
kCAEmitterLayerBackToFront //這種模式下,粒子的渲染按照Z軸的前后順序進行
kCAEmitterLayerAdditive //這種模式會進行粒子混合
*/
_snowEmitter.renderMode = kCAEmitterLayerBackToFront;
/*emitterShape
kCAEmitterLayerPoint //點的形狀馁龟,粒子從一個點發(fā)出
kCAEmitterLayerLine //線的形狀崩侠,粒子從一條線發(fā)出
kCAEmitterLayerRectangle //矩形形狀,粒子從一個矩形中發(fā)出
kCAEmitterLayerCuboid //立方體形狀坷檩,會影響Z平面的效果
kCAEmitterLayerCircle //圓形却音,粒子會在圓形范圍發(fā)射
kCAEmitterLayerSphere //球型
*/
_snowEmitter.emitterShape = kCAEmitterLayerPoint;
_snowEmitter.preservesDepth = YES;
/*發(fā)射器的發(fā)射模式
kCAEmitterLayerPoints //從發(fā)射器中發(fā)出
kCAEmitterLayerOutline //從發(fā)射器邊緣發(fā)出
kCAEmitterLayerSurface //從發(fā)射器表面發(fā)出
kCAEmitterLayerVolume //從發(fā)射器中點發(fā)出
*/
_snowEmitter.emitterMode = kCAEmitterLayerVolume;
/*下面是_snowEmitter的一些屬性
_snowEmitter.birthRate //粒子的創(chuàng)建速率改抡,默認為1/s
lifetime 粒子的存活時間。默認為1S
emitterZPosition 發(fā)射器在Z平面的位置
emitterDepth 發(fā)射器的深度系瓢,在某些發(fā)射模式下會產(chǎn)生立體效果
emitterShape 發(fā)射器的形狀
emitterMode 發(fā)射器的發(fā)射模式
preservesDepth 是否開啟三維空間效果
velocity 粒子的運動速度
scale 粒子的縮放大小
spin 粒子的旋轉(zhuǎn)位置
seed 初始化隨機的粒子種子
*/
//發(fā)射單元
//火焰
CAEmitterCell * snow = [CAEmitterCell emitterCell];
//粒子的創(chuàng)建速率
snow.birthRate = 22;
//粒子的生存時間
snow.lifetime = 2.0;
//粒子的生存時間容差
snow.lifetimeRange = 1.5;
//粒子的顏色
snow.color = [[UIColor whiteColor]CGColor];
//渲染粒子阿纤,可以設(shè)置為一個CGImage的對象
snow.contents = (id)[[UIImage imageNamed:@"snow.png"]CGImage];
//設(shè)置發(fā)射單元的名稱
snow.name = @"snow";
//粒子的速度
snow.velocity=160;
//粒子速度的容差
snow.velocityRange=80;
//粒子在xy平面的發(fā)射角度
snow.emissionLongitude= M_PI/2;
//粒子發(fā)射角度的容差
snow.emissionRange=M_PI/2;
//縮放速度
snow.scaleSpeed=0.3;
//旋轉(zhuǎn)度
snow.spin=0.2;
/*下面是snow的一些屬性
xAcceleration/yAcceleration/zAcceleration; x,y夷陋,z三個方向的加速度
contentsRect 渲染的范圍
@property float redRange;
@property float greenRange;
@property float blueRange;
@property float alphaRange;
粒子在rgb三個色相上的容差和透明度的容差
@property float redSpeed;
@property float greenSpeed;
@property float blueSpeed;
@property float alphaSpeed;
粒子在RGB三個色相上的變化速度和透明度的變化速度
*/
//粒子單元數(shù)組
_snowEmitter.emitterCells = [NSArray arrayWithObjects:snow,nil];
[self.view.layer addSublayer:_snowEmitter];
二欠拾、CAGradientLayer是用于色彩梯度展示的layer圖層
/*CAGradientLayer的一些屬性
//顏色數(shù)組,設(shè)置我們需要過的的顏色肌稻,必須是CGColor對象
@property(nullable, copy) NSArray *colors;
//顏色開始進行過渡的位置
這個數(shù)組中的元素是NSNumber類型清蚀,單調(diào)遞增的,并且在0——1之間
例如爹谭,如果我們設(shè)置兩個顏色進行過渡枷邪,這個數(shù)組中寫入0.5,則第一個顏色會在達到layer一半的時候開始向第二個顏色過渡
@property(nullable, copy) NSArray<NSNumber *> *locations;
//下面兩個參數(shù)用于設(shè)置渲染顏色的起點和終點 取值范圍均為0——1
默認起點為(0.5 诺凡,0) 終點為(0.5 东揣,1),顏色的過渡范圍就是沿y軸從上向下
@property CGPoint startPoint;
@property CGPoint endPoint;
//渲染風格 iOS中只支持一種默認的kCAGradientLayerAxial,我們無需手動設(shè)置
@property(copy) NSString *type;
*/
三腹泌、富文本Attributes屬性
/*
NSKernAttributeName(文字間距) : @8
NSFontAttributeName(字體設(shè)置)
NSForegroundColorAttributeName(字體顏色)
NSParagraphStyleAttributeName(段落樣式)
NSBackgroundColorAttributeName(背景顏色)
NSStrokeColorAttributeName(字體邊框顏色)和NSStrokeWidthAttributeName(字體邊框的寬度)嘶卧,字體邊框的寬度是按照和字體的大小進行比例設(shè)置的.這兩個屬性設(shè)置完成之后會出現(xiàn)兩種效果,如果NSStrokeWidthAttributeName為負數(shù),那么字體為描邊,如果NSStrokeWidthAttributeName為正整數(shù),字體的效果就成了空心字.值得注意的是,這兩個屬性必須要配合著使用,只設(shè)置一方面是不能實現(xiàn)效果的。
NSStrikethroughStyleAttributeName(刪除線):@(NSUnderlineStyleSingle)
NSUnderlineStyleAttributeName(下劃線) :@(NSUnderlineStyleSingle)
NSUnderlineColorAttributeName 設(shè)置下劃線顏色
NSVerticalGlyphFormAttributeName(文字排版方向) :@0 凉袱;0表示橫排 芥吟,1代表豎排 (沒看到效果)
NSObliquenessAttributeName(文字傾斜) : @5;
NSExpansionAttributeName(文字扁平化) :@1专甩;
NSShadowAttributeName(文字陰影) :shadow
NSShadowAttributeName對應的是NSShadow對象,單一使用不會有任何效果,需要配合著NSVerticalGlyphFormAttributeName(文字排版方向)钟鸵、NSObliquenessAttributeName(文字傾斜)、NSExpansionAttributeName(文字扁平化)配合使用
NSWritingDirectionAttributeName(設(shè)置文字書寫方向):@(NSWritingDirectionRightToLeft) (沒看到效果)
NSLinkAttributeName 設(shè)置鏈接屬性涤躲,點擊后調(diào)用瀏覽器打開指定URL地址
NSAttachmentAttributeName 設(shè)置文本附件,取值為NSTextAttachment對象,常用于文字圖片混排
*/
還有CAReplicatorLayer棺耍、CAShapeLayer、CATextLayer种樱、CGContextRef蒙袍、UIBezierPath 用法就不在這里說了,詳情可以去Demo中查看或者去參考http://www.reibang.com/p/3f191880a567 嫩挤、http://www.reibang.com/p/6c9aa9c5dd68
贊一下害幅、么么噠.gif