蘋果開機經典滑動動畫

來源:互聯網
上載者:User

標籤:

1首先定義

@interface ViewController ()
{
    CAGradientLayer* _gridentlayer;
}
@end

2 在viewDidLoad中實現

 //這裡出現了CALayer的另一個子類CAGradientLayer,這個類的作用就是能在Layer上繪製出漸層顏色的效果,然後在viewDidLoad()中添加如下代碼:
    _gridentlayer = [[CAGradientLayer alloc] init];
    _gridentlayer.bounds=CGRectMake(0, 0,self.backgroundView.frame.size.width, self.backgroundView.frame.size.height);
    _gridentlayer.position=CGPointMake(self.backgroundView.frame.size.width/2, self.backgroundView.frame.size.height/2);
    //    gradientLayer.colors = [
    //UIColor.blackColor().CGColor,
   // UIColor.whiteColor().CGColor,
   // UIColor.blackColor().CGColor
   // ]
    //上述兩行的代碼是設定Layer的大小及位置
    [_gridentlayer setStartPoint:CGPointMake(0, 0.5)];
    [_gridentlayer setEndPoint:CGPointMake(1, 0.5)];
    /**
     CAGradientLayer的colors屬性類型是一個數組[AnyObject],這就意味著我們可以實現多個顏色的漸層效果,並且可以規定各個顏色的順序。不過在我們這個樣本中我們只需要兩種顏色,不過需要注意的是雖然顏色只有兩種,但是整個色彩坡形的過程中有三個原色點,那就是黑、白、黑,所以我們在這個數組中也需要按照原色點的數量和順序添加相應的顏色,哪怕顏色都是一樣的。
     
     我們既然設定了漸層的三個原色,那麼就要對這原色出現的位置進行設定,接著添加如下代碼:
     */
    [_gridentlayer setColors:[NSArray arrayWithObjects:(id)[UIColor blackColor].CGColor,(id)[UIColor whiteColor].CGColor,(id)[UIColor blackColor].CGColor, nil]];
    [_gridentlayer setLocations:@[@0.2 ,@0.5,@0.8]];
    [self.backgroundView.layer addSublayer:_gridentlayer];

}

-(void)viewDidAppear:(BOOL)animated{
    [self gradinetAnimate];
}
-(void)gradinetAnimate{
//      [email protected]"caoxiang";
//    _gridentlayer.mask=self.textlabel.layer;
    // 首先,建立了一個locations類型的動畫執行個體gradient,將fromValue屬性,也就是起始位置的屬性設定為[0, 0, 0.25],它的意思是動畫開始前,黑色、白色這兩個原色的位置在整個Layer的最前端,第二個黑色原色在0.25的位置:
    CABasicAnimation * animation=[CABasicAnimation animationWithKeyPath:@"locations"];
    [animation setFromValue:@[@0,@0,@0.25]];
     [animation setToValue:@[@0.75,@1,@1]];
    //而結束位置toValue,將白色和第二個黑色原色位置設定在整個Layer的末端,第一個黑色原色在0.75的位置:
   // 可以看出,此時整個Layer都變成了黑色。也就是說,在整個動畫中,第一個黑色原色從0移動到0.75的位置,白色原色從0移動到1的位置,第二個黑色原色從0.25移動到1的位置。然後設定動畫時間為2秒,無線重複次數,最後將gradient動畫添加到gradientLayer中。我們在viewDidAppear()方法中調用該動畫方法gradientAnimate(),編譯運行看看效果:
    animation.duration=2;
    animation.repeatCount=HUGE;
    [_gridentlayer addAnimation:animation forKey:nil];
    [email protected]"hahahahaha";
    _gridentlayer.mask=self.textlabel.layer;
}


蘋果開機經典滑動動畫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.