美文网首页
CAReplicatorLayer(重复图层二)

CAReplicatorLayer(重复图层二)

作者: 莪的世界木有如果 | 来源:发表于2018-08-20 15:27 被阅读31次

上篇说道了CAReplicatorLayer的属性和基本用法,接下来利用CAReplicatorLayer来实现一个倒影反射的效果。如图

反射效果

GitHub地址在layer/CAReplicatorLayer/ReplicatorController里面

指定一个继承于UIView的ReflectionView,它会自动产生内容的反射效果。只需要把ReflectionView的实例放置于Interface Buider,或者代码实现生成ReflectionView的实例,添加到view上。这样就会生成子视图的反射。

ReflectionView.h文件

#import <UIKit/UIKit.h>

@interface ReflectionView : UIView

@end

ReflectionView.m文件

#import "ReflectionView.h"

@implementation ReflectionView

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

-(void)setUp{
//    创建一个replicatorLayer
    CAReplicatorLayer * layer = (CAReplicatorLayer *)self.layer;
//    设置重复层个数
    layer.instanceCount = 2;

//    设置重复层的transform
    CATransform3D transform = CATransform3DIdentity;
//    设置位移量
    CGFloat verticalHeight = self.bounds.size.height + 2;
//    设置沿着Y轴位移verticalHeight
    transform = CATransform3DTranslate(transform, 0, verticalHeight, 0);
//    设置Y方向缩放-1,
    transform = CATransform3DScale(transform, 1, -1, 1);
//    添加transform
    layer.instanceTransform = transform;
//    设置重复层的alpha变化
    layer.instanceAlphaOffset = -0.6;
}

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self setUp];
    }
    return self;
}

- (void)awakeFromNib{
    [super awakeFromNib];
    [self setUp];
}

调用:
1、Interface Buider(图一)


图一

这里一定要注意红色框内,要指定这个view为ReflectionView;

2、代码调用

ReflectionView * view = [[ReflectionView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
    view.center = CGPointMake(kWidth/2, kHeight/2-200);
    UIImageView * img = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
    img.image = [UIImage imageNamed:@"reflection_image"];
    [view addSubview:img];
    [self.view addSubview:view];

这样就实现了一个倒影反射的效果。参考《ios核心动画高级技巧》一书里面的反射。

相关文章

  • CAReplicatorLayer(重复图层二)

    上篇说道了CAReplicatorLayer的属性和基本用法,接下来利用CAReplicatorLayer来实现一...

  • CAReplicatorLayer(重复图层)

    CAReplicatorLayer的目的是为了高效生成许多相似的图层。它会绘制一个或多个图层的子图层,并在每个复制...

  • CAReplicatorLayer 重复图层

    以前看高级动画的时候,知道CAReplicatorLayer 重复图层,没怎么去用,今天看别人博客看到这个,感觉挺...

  • iOS-CAReplicatorLayer

    CAReplicatorLayer 复制图层 1、什么是CAReplicatorLayer? CAReplicat...

  • CAReplicatorLayer 详解

    CAReplicatorLayer 1 CAReplicatorLayer的目的是为了高效生成许多相似的图层.它...

  • iOS专用图层CAReplicatorLayer、CAEmitt

    CAReplicatorLayer CAReplicatorLayer目的是高效生成许多相似的图层。它会绘制一个或...

  • 复制图层-CAReplicatorLayer

    复制图层-CAReplicatorLayer 有的时候我们需要很多相似的图层,这些图层也不用和用户交互,所以我们先...

  • CAReplicatorLayer 学习和实践

    介绍 CAReplicatorLayer的目的是为了高效生成许多相似的图层。它会绘制一个或多个图层的子图层,并在每...

  • 可复制图层CAReplicatorLayer

    CAReplicatorLayer的作用是高效生成相似的图层。它会复制出多个子图层,并且在每个复制图层上面应用不同...

  • CAReplicatorLayer的使用

    CAReplicatorLayer可以高效的生成许多相似的图层。它可以绘制一个或多个图层的子图层,通过设置一些属性...

网友评论

      本文标题:CAReplicatorLayer(重复图层二)

      本文链接:https://www.haomeiwen.com/subject/gmlliftx.html