iOS動畫之倒影

1.結果展示

這裏寫圖片描述

2.實現思路

1.用複製圖層實現,搞個UIImageView展示圖片,然後複製UIImageView.

注意:複製圖層只能複製子層,但是UIImageView只有一個主層,並沒有子層,因此不能直接複製UIImageView.

2.正確做法:應該把UIImageView添加到一個UIView上,然後複製UIView的層,就能複製UIImageView.

注意:默認A控件是B控件的子控件,那麼A控件的層就是B控件的層的子層。

3.但是有問題,默認UIView的層不是複製層,我們想把UIView的層變成複製層,重寫+layerClass方法。

+ (Class)layerClass
{
    return [CAReplicatorLayer class];
}

4.倒影效果:就是就是把複製圖片旋轉180度,然後往下平移,最好先偏移在,在旋轉。

     CAReplicatorLayer *layer = (CAReplicatorLayer *)self.v.layer;

    layer.instanceCount = 2;

    // 先Y軸偏移
    CATransform3D transform =  CATransform3DMakeTranslation(0, self.v.bounds.size.height, 0);

    // 在旋轉
    transform = CATransform3DRotate(transform, M_PI, 1, 0, 0);

    // 設置複製層的形變
    layer.instanceTransform = transform;

    // 設置顏色通道偏移量,相等上一個一點偏移量,就是陰影效果
    layer.instanceRedOffset = -0.1;
    layer.instanceGreenOffset = -0.1;
    layer.instanceBlueOffset = -0.1;
    layer.instanceAlphaOffset = -0.1;

3.Demo實現

https://github.com/Esdeath/invertedimage

發佈了190 篇原創文章 · 獲贊 12 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章