#霓虹灯创建流程

霓虹灯创建流程:
<一>:因为它是一个自定义视图,所以必须在它他的初始化方法中,创建,使用for循环创建多个UIView:
1、坐标设置:X和Y坐标设置成零,因为最终是要让他显示在屏幕中心的,即使在这块给X和Y设置了值,最终设置它的center点,这块的设置也是无效的,
2、设置宽:霓虹灯的效果是从大到小以循环的方式显示,所以宽为,第一个View的宽减去间隔30再乘以i,(这块的i就代表的时循环的次数,意思就是说每循环一次。减一次30.这样就不会重叠)。
3、设置高:所以高为,第一个View的高减去间隔30再乘以i,(这块的i就代表的是循环的次数,意思就是说每循环一次。减一次30.这样就不会重叠)。
4、设置视图的形状(有圆形、矩形)如果不设置这个方法时,默认是矩形,因为每个视图本身就是一个矩形view.layer.cornerRandius = CGRectGetWidth(view.frame)/2;
5、设置定时器:视图创建设置属性完成之后,就得给视图设置定时器了,其实和BUtton的按钮方法差不多,只不过这个方法是系统自己调用的,不用我们自己手动点击实现此方法。
[NSTimer scheduledTimerWithTimeInterval:0.12 target:self selector:@selector(changeColor) userInfo:nil repeats:YES];
6、定时器的回调方法:
(1)、先将视图由小到大进行一次视图交换,也就是循环一次,循环的时候时根据颜色进行循环的,所以必须先得到视图的颜色,然后交换视图的颜色即可

7、具体代码实现如下
//霓虹灯的初始化方法

  • (instancetype)initWithFrame:(CGRect)frame{
    if (self = [super initWithFrame:frame]) {
    for (int i = 0; i < 17; i++) {
    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, CGRectGetWidth(frame)-30 *i, CGRectGetHeight(frame)-30 *i)];
    view.backgroundColor = RGBA;
    view.center = self.center;
    view.tag = 1000+i;
    // 将视图设置为圆形
    view.layer.cornerRadius = CGRectGetWidth(view.frame)/2;
    [self addSubview:view];
    // 定时器创建
    * @param NSTimeInterval :设置多长时间调用一次回调方法,单位为妙
    * target:执行回调方法的目标
    * selector:回调方法
    * userInfo:如果回调方法中加了冒号,就表示有参数,这个参数就是userInfo
    repeats:是否重复执行,YES为执行,NO为不执行
    }
    [NSTimer scheduledTimerWithTimeInterval:0.12 target:self selector:@selector(changeColor) userInfo:nil repeats:YES];
    }
    return self;
    }
    //定时器的回调方法
    -(void)changeColor
    {
    //每执行一次,将由小到大的视图交换一遍
    for (int i=0; i<16; i++)
    {
    第一种扩散模式:由外向内扩散
    //得到某一个视图的颜色,并且让这个霓虹灯的颜色是由外向内扩散的
    // UIColor *myColor=[[self viewWithTag:1016-i]backgroundColor];
    // 得到某一个视图的颜色,并且让这个霓虹灯的颜色是由外向内扩散的
    // UIColor *nextColor=[[self viewWithTag:1016-i-1]backgroundColor];
    //
    // [[self viewWithTag:1016-i]setBackgroundColor:nextColor];
    // [[self viewWithTag:1016-i-1]setBackgroundColor:myColor];

    第二种扩散模式:由内向外扩散的
    // 得到某一个视图的颜色,并且让这个霓虹灯的颜色是由内向外扩散的
    UIColor *myColor=[[self viewWithTag:1000+i]backgroundColor];
    得到某一个视图的颜色,并且让这个霓虹灯的颜色是由内向外扩散的
    UIColor *nextColor=[[self viewWithTag:1000+i+1]backgroundColor];
    [[self viewWithTag:1000+i]setBackgroundColor:nextColor];
    [[self viewWithTag:1000+i+1]setBackgroundColor:myColor];

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

推荐阅读更多精彩内容