RCLighting

简介:

RCLighting

https://github.com/RidgeCorn/RCLighting

效果:

真机测试的效率:

看了源码,其实原理很简单:

================================

1. 实现UIView的category

2. 继承了一个CALayer

3. 将这个继承的CALayer插入到UIView的subLayer中

4. 对这个layer进行动画操作

================================

源码:

//
//  RootViewController.m
//  Lighting
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import "RootViewController.h"
#import "RCLighting.h"

@interface RootViewController ()

@end

@implementation RootViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];
    
    // 辉光view
    UIView *showView          = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 50)];
    showView.alpha            = 0.8f;
    showView.backgroundColor  = [UIColor redColor];
    showView.center           = self.view.center;
    [self.view addSubview:showView];
    [showView showLightingWithColors:@[[UIColor brownColor],
                                       [UIColor greenColor],
                                       [UIColor cyanColor],
                                       [UIColor orangeColor],
                                       [UIColor purpleColor],
                                       [UIColor magentaColor],
                                       [UIColor redColor],
                                       [UIColor yellowColor],
                                       [UIColor blueColor]]];
    
    // 中间显示字体
    UILabel *label      = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 100)];
    label.textAlignment = NSTextAlignmentCenter;
    label.textColor     = [UIColor whiteColor];
    label.font          = [UIFont fontWithName:@"HelveticaNeue-UltraLight"
                                          size:30.f];
    label.text          = @"YouXianMing";
    label.center        = self.view.center;
    [self.view addSubview:label];
}

@end

注意哦,源码中有用到POP库动画

 

 

 

 

目录
相关文章
|
4月前
|
存储 Java 调度
技术笔记:quartz(从原理到应用)详解篇(转)
技术笔记:quartz(从原理到应用)详解篇(转)
|
4月前
|
安全 网络安全 网络协议
精选30道“渗透测试工程师”面试题
渗透测试 信息收集 网络安全 web安全
158 3
|
5月前
|
存储 消息中间件 缓存
Redis的高性能使得它非常适合用于实时分析场景
【5月更文挑战第15天】Redis在Python Web开发中扮演关键角色,常用于缓存系统,提高数据读取速度;会话管理,存储用户信息;分布式锁,确保数据一致性;排行榜和计数,利用有序集合和哈希结构;消息队列,基于列表结构实现异步处理;实时分析,高效处理实时数据。其丰富的数据结构和高性能使其在多种场景下应用广泛。
334 3
|
JavaScript
Vue中获取路由参数的问题
Vue中获取路由参数的问题
381 0
|
缓存 Kubernetes Cloud Native
一位 sealer maintainer 的心路历程
本文作者将回顾个人参与 sealer 开源项目的机缘巧合,参与过程中的挑战,以及从中获取的所悟所感,写下一段文字进行分享,希望对开源新人有所帮助,能够激励想参与开源工作但还未踏出第一步的同学。
一位 sealer maintainer 的心路历程
|
Android开发 UED
完美解决android软键盘挡住输入框方法,还不顶标题栏
完美解决android软键盘挡住输入框方法,还不顶标题栏
1331 0
完美解决android软键盘挡住输入框方法,还不顶标题栏
|
数据采集 缓存 运维
埃森哲携手阿里云共建基于云原生的消费者运营中台解决方案
作为全球领先的专业服务公司,埃森哲凭借独特的业内经验与专业技能,以及翘楚全球的卓越技术中心和智能运营中心,此次携手阿里云为零售行业客户提供专业的云原生CDP+MA解决方案。
7577 8
埃森哲携手阿里云共建基于云原生的消费者运营中台解决方案
【Postman】创建第一个集合
【Postman】创建第一个集合
102 0
【Postman】创建第一个集合
|
监控 数据可视化 数据挖掘
Wakawaka:华人企业用宜搭把数字化经验带进非洲
钉钉宜搭帮助Wakawaka大幅提升了内部管理效率,降低了70%的人力成本。
578 0
Wakawaka:华人企业用宜搭把数字化经验带进非洲