CAReplicatorLayer(重复图层二)

上篇说道了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核心动画高级技巧》一书里面的反射。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,026评论 3 119
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,081评论 25 709
  • 基本原理 1. 所谓的“直觉”,是迅速出现在脑海中的没有理由的强烈的想选它。在经验丰富的情况下,信息不完整下的分析...
    琢磨概念者阅读 340评论 0 1
  • (二)文竹 文竹在我眼里就是个美男子。他隽秀挺拔,气宇轩昂,符合我心里对于男子所有关于美的定义,要颜值有颜值,要气...
    雪玲1971阅读 333评论 0 0
  • 很多人害怕公众演讲。《谁说你不能演讲》的故事主人公王闯由于不会演讲,在大学时的暑期社会实践宣讲会、亲戚的婚礼致辞时...
    倍课阅读 645评论 0 7