zoukankan      html  css  js  c++  java
  • 山寨Facebook的Shimmer效果

    山寨Facebook的Shimmer效果

    说明

    主要是用到了CAGradientLayer的特性来实现特效效果,因为时间有限,并没有进行封装,待后续改进.

    效果

    源码(源码没有进行封装,细节都没有处理,望见谅)

    //
    //  FadeString.h
    //  FadeWords
    //
    //  Created by YouXianMing on 15/5/7.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface FadeString : UIView
    
    /**
     *  输入文本
     */
    @property (nonatomic, strong) NSString *text;
    
    
    /**
     *  向右渐变消失
     */
    - (void)fadeRight;
    
    @end
    //
    //  FadeString.m
    //  FadeWords
    //
    //  Created by YouXianMing on 15/5/7.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import "FadeString.h"
    
    @interface FadeString ()
    
    @property (nonatomic, strong) UILabel *label;
    @property (nonatomic, strong) UILabel *backLabel;
    @property (nonatomic, strong) UIView  *mask;  // 作为遮罩的mask
    
    @end
    
    @implementation FadeString
    
    
    - (instancetype)initWithFrame:(CGRect)frame {
        self = [super initWithFrame:frame];
        if (self) {
            
            // 创建出label
            [self createLabel:self.bounds];
            
            // 创建出mask
            [self createMask:self.bounds];
            
        }
        return self;
    }
    
    - (void)createLabel:(CGRect)frame {
        self.label               = [[UILabel alloc] initWithFrame:frame];
        self.label.font          = [UIFont fontWithName:@"AvenirNext-ULtraLight" size:45.f];
        self.label.textAlignment = NSTextAlignmentCenter;
        self.label.textColor     = [[UIColor cyanColor] colorWithAlphaComponent:0.5f];
        
        [self addSubview:self.label];
    }
    
    - (void)createMask:(CGRect)frame {
        
        // 创建出渐变的layer
        CAGradientLayer *gradientLayer = [CAGradientLayer layer];
        gradientLayer.frame            = frame;
        gradientLayer.colors           = @[(__bridge id)[UIColor clearColor].CGColor,
                                           (__bridge id)[UIColor blackColor].CGColor,
                                           (__bridge id)[UIColor blackColor].CGColor,
                                           (__bridge id)[UIColor clearColor].CGColor];
        gradientLayer.locations        = @[@(0.01), @(0.2), @(0.4), @(0.59)];
        gradientLayer.startPoint       = CGPointMake(0, 0);
        gradientLayer.endPoint         = CGPointMake(1, 0);
        
        // 创建并接管mask
        self.mask     = [[UIView alloc] initWithFrame:frame];
        
        // mask获取渐变layer
        [self.mask.layer addSublayer:gradientLayer];
        
        CGRect newFrame    = self.mask.frame;
        newFrame.origin.x -= 200;
        self.mask.frame    = newFrame;
        
        self.maskView = self.mask;
    }
    
    - (void)fadeRight {
        
        [UIView animateWithDuration:5.f animations:^{
            CGRect frame    = self.mask.frame;
            frame.origin.x += (frame.size.width + 400);
            
            self.mask.frame = frame;
        }];
        
    }
    
    /**
     *  重写setter,getter方法
     */
    @synthesize text = _text;
    - (void)setText:(NSString *)text {
        _text           = text;
        self.label.text = text;
    }
    - (NSString *)text {
        return _text;
    }
    
    @end
    //
    //  ViewController.m
    //  FadeWords
    //
    //  Created by YouXianMing on 15/5/7.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "FadeString.h"
    
    @interface ViewController ()
    
    @property (nonatomic, strong) UILabel    *label;
    @property (nonatomic, strong) FadeString *fadeString;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        self.view.backgroundColor = [UIColor blackColor];
        
        
        self.label               = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 70)];
        self.label.font          = [UIFont fontWithName:@"AvenirNext-ULtraLight" size:45.f];
        self.label.center        = self.view.center;
        self.label.textAlignment = NSTextAlignmentCenter;
        self.label.textColor     = [UIColor grayColor];
        self.label.text          = @"YouXianMing";
        [self.view addSubview:self.label];
    
        
        
        // 创建FadeString
        self.fadeString             = [[FadeString alloc] initWithFrame:CGRectMake(0, 0, 300, 70)];
        self.fadeString.text        = @"YouXianMing";
        self.fadeString.center      = self.view.center;
        [self.view addSubview:self.fadeString];
        
        
        [self performSelector:@selector(run)
                   withObject:nil
                   afterDelay:4.f];
    }
    
    - (void)run {
        // 执行动画效果
        [self.fadeString fadeRight];
    }
    
    @end

    关键的设置

  • 相关阅读:
    vue-cli中安装方法
    css初始化
    VUE基本指令(v-model,v-html,v-text,v-bind,v-if,v-show,v-for,v-on:click,组件,过滤器)
    在浏览器上安装 Vue Devtools工具
    vue前端框架面试问题汇总
    git修改用户名、邮箱
    js对字符串的一些操作方法
    11款JavaScript颜色拾取插件推荐
    vue-devtools的安装与使用
    JS里的居民们4-数组((堆)队列
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4486413.html
Copyright © 2011-2022 走看看