先上效果圖:
CALayer系列.gif
CGContextRef、UIBezierPath、文本屬性Attributes.gif
一、CAEmitterLayer 粒子屬性
//設定發射器
CAEmitterLayer * _snowEmitter=[[CAEmitterLayer alloc]init];
//發射器在xy平面的中心位置
_snowEmitter.emitterPosition=CGPointMake(self.view.frame.size.width/2,self.view.frame.size.height/2);
//發射器的尺寸大小
_snowEmitter.emitterSize=CGSizeMake(20, 20);
//發射器的渲染模式
/*
kCAEmitterLayerUnordered //這種模式下,粒子是無序出現的,多個發射源将混合
kCAEmitterLayerOldestFirst //這種模式下,聲明久的粒子會被渲染在最上層
kCAEmitterLayerOldestLast //這種模式下,年輕的粒子會被渲染在最上層
kCAEmitterLayerBackToFront //這種模式下,粒子的渲染按照Z軸的前後順序進行
kCAEmitterLayerAdditive //這種模式會進行粒子混合
*/
_snowEmitter.renderMode = kCAEmitterLayerBackToFront;
/*emitterShape
kCAEmitterLayerPoint //點的形狀,粒子從一個點發出
kCAEmitterLayerLine //線的形狀,粒子從一條線發出
kCAEmitterLayerRectangle //矩形形狀,粒子從一個矩形中發出
kCAEmitterLayerCuboid //立方體形狀,會影響Z平面的效果
kCAEmitterLayerCircle //圓形,粒子會在圓形範圍發射
kCAEmitterLayerSphere //球型
*/
_snowEmitter.emitterShape = kCAEmitterLayerPoint;
_snowEmitter.preservesDepth = YES;
/*發射器的發射模式
kCAEmitterLayerPoints //從發射器中發出
kCAEmitterLayerOutline //從發射器邊緣發出
kCAEmitterLayerSurface //從發射器表面發出
kCAEmitterLayerVolume //從發射器中點發出
*/
_snowEmitter.emitterMode = kCAEmitterLayerVolume;
/*下面是_snowEmitter的一些屬性
_snowEmitter.birthRate //粒子的建立速率,預設為1/s
lifetime 粒子的存活時間。預設為1S
emitterZPosition 發射器在Z平面的位置
emitterDepth 發射器的深度,在某些發射模式下會産生立體效果
emitterShape 發射器的形狀
emitterMode 發射器的發射模式
preservesDepth 是否開啟三維空間效果
velocity 粒子的運動速度
scale 粒子的縮放大小
spin 粒子的旋轉位置
seed 初始化随機的粒子種子
*/
//發射單元
//火焰
CAEmitterCell * snow = [CAEmitterCell emitterCell];
//粒子的建立速率
snow.birthRate = 22;
//粒子的生存時間
snow.lifetime = 2.0;
//粒子的生存時間容差
snow.lifetimeRange = 1.5;
//粒子的顔色
snow.color = [[UIColor whiteColor]CGColor];
//渲染粒子,可以設定為一個CGImage的對象
snow.contents = (id)[[UIImage imageNamed:@"snow.png"]CGImage];
//設定發射單元的名稱
snow.name = @"snow";
//粒子的速度
snow.velocity=160;
//粒子速度的容差
snow.velocityRange=80;
//粒子在xy平面的發射角度
snow.emissionLongitude= M_PI/2;
//粒子發射角度的容差
snow.emissionRange=M_PI/2;
//縮放速度
snow.scaleSpeed=0.3;
//旋轉度
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三個色相上的變化速度和透明度的變化速度
*/
//粒子單元數組
_snowEmitter.emitterCells = [NSArray arrayWithObjects:snow,nil];
[self.view.layer addSublayer:_snowEmitter];
複制
二、CAGradientLayer是用于色彩梯度展示的layer圖層
/*CAGradientLayer的一些屬性
//顔色數組,設定我們需要過的的顔色,必須是CGColor對象
@property(nullable, copy) NSArray *colors;
//顔色開始進行過渡的位置
這個數組中的元素是NSNumber類型,單調遞增的,并且在0——1之間
例如,如果我們設定兩個顔色進行過渡,這個數組中寫入0.5,則第一個顔色會在達到layer一半的時候開始向第二個顔色過渡
@property(nullable, copy) NSArray<NSNumber *> *locations;
//下面兩個參數用于設定渲染顔色的起點和終點 取值範圍均為0——1
預設起點為(0.5 ,0) 終點為(0.5 ,1),顔色的過渡範圍就是沿y軸從上向下
@property CGPoint startPoint;
@property CGPoint endPoint;
//渲染風格 iOS中隻支援一種預設的kCAGradientLayerAxial,我們無需手動設定
@property(copy) NSString *type;
*/
複制
三、富文本Attributes屬性
/*
NSKernAttributeName(文字間距) : @8
NSFontAttributeName(字型設定)
NSForegroundColorAttributeName(字型顔色)
NSParagraphStyleAttributeName(段落樣式)
NSBackgroundColorAttributeName(背景顔色)
NSStrokeColorAttributeName(字型邊框顔色)和NSStrokeWidthAttributeName(字型邊框的寬度),字型邊框的寬度是按照和字型的大小進行比例設定的.這兩個屬性設定完成之後會出現兩種效果,如果NSStrokeWidthAttributeName為負數,那麼字型為描邊,如果NSStrokeWidthAttributeName為正整數,字型的效果就成了空心字.值得注意的是,這兩個屬性必須要配合着使用,隻設定一方面是不能實作效果的。
NSStrikethroughStyleAttributeName(删除線):@(NSUnderlineStyleSingle)
NSUnderlineStyleAttributeName(下劃線) :@(NSUnderlineStyleSingle)
NSUnderlineColorAttributeName 設定下劃線顔色
NSVerticalGlyphFormAttributeName(文字排版方向) :@0 ;0表示橫排 ,1代表豎排 (沒看到效果)
NSObliquenessAttributeName(文字傾斜) : @5;
NSExpansionAttributeName(文字扁平化) :@1;
NSShadowAttributeName(文字陰影) :shadow
NSShadowAttributeName對應的是NSShadow對象,單一使用不會有任何效果,需要配合着NSVerticalGlyphFormAttributeName(文字排版方向)、NSObliquenessAttributeName(文字傾斜)、NSExpansionAttributeName(文字扁平化)配合使用
NSWritingDirectionAttributeName(設定文字書寫方向):@(NSWritingDirectionRightToLeft) (沒看到效果)
NSLinkAttributeName 設定連結屬性,點選後調用浏覽器打開指定URL位址
NSAttachmentAttributeName 設定文本附件,取值為NSTextAttachment對象,常用于文字圖檔混排
*/
複制
還有CAReplicatorLayer、CAShapeLayer、CATextLayer、CGContextRef、UIBezierPath 用法就不在這裡說了,詳情可以去Demo中檢視或者去參考http://www.jianshu.com/p/3f191880a567 、http://www.jianshu.com/p/6c9aa9c5dd68