CALayer系列、CGContextRef、UIBezierPath、文本屬性Attributes
先上效果圖:
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 用法就不在這里說了。
來自:http://www.jianshu.com/p/d6e090ed542b
本文由用戶 de1267 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!