CALayer系列、CGContextRef、UIBezierPath、文本屬性Attributes

de1267 8年前發布 | 8K 次閱讀 CALayer iOS開發 移動開發

先上效果圖:

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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!