• 编写带有点击特效的UIButton


    编写带有点击特效的UIButton

    效果:

    源码:

    //
    //  ViewController.m
    //  Button
    //
    //  Created by XianMingYou on 15/1/18.
    //  Copyright (c) 2015年 XianMingYou. All rights reserved.
    //
    
    #import "ViewController.h"
    
    @interface ViewController ()
    
    @property (nonatomic, strong) UIButton    *button;
    @property (nonatomic, strong) UIView      *showView;
    @property (nonatomic, strong) UILabel     *showLabel;
    @property (nonatomic, strong) UILabel     *staticLabel;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        self.view.backgroundColor = [UIColor blackColor];
    
        
        self.showView                        = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 0)];
        self.showView.transform              = CGAffineTransformMakeRotation(45 * M_PI / 180.0);
        self.showView.userInteractionEnabled = NO;
        self.showView.backgroundColor        = [UIColor redColor];
        
        
        self.staticLabel               = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 130, 30)];
        self.staticLabel.text          = @"YouXianMing";
        self.staticLabel.font          = [UIFont fontWithName:@"HelveticaNeue-Thin" size:18.f];
        self.staticLabel.textAlignment = NSTextAlignmentCenter;
        self.staticLabel.textColor     = [UIColor redColor];
        
        
        self.showLabel               = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 130, 30)];
        self.showLabel.text          = @"YouXianMing";
        self.showLabel.alpha         = 0.f;
        self.showLabel.font          = [UIFont fontWithName:@"HelveticaNeue-Thin" size:18.f];
        self.showLabel.textAlignment = NSTextAlignmentCenter;
        self.showLabel.textColor     = [UIColor blackColor];
    
        
        
        // 完整显示按住按钮后的动画效果
        _button                     = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 130, 30)];
        _button.backgroundColor     = [UIColor clearColor];
        _button.layer.borderWidth   = 1.f;
        _button.layer.borderColor   = [UIColor redColor].CGColor;
        _button.layer.masksToBounds = YES;
        _button.center              = self.view.center;
        [self.view addSubview:_button];
        
        self.showView.center = CGPointMake(_button.frame.size.width / 2.f, _button.frame.size.height / 2.f);
        [_button addSubview:self.showView];
        
        self.staticLabel.center = CGPointMake(_button.frame.size.width / 2.f, _button.frame.size.height / 2.f);
        [_button addSubview:self.staticLabel];
        
        self.showLabel.center = CGPointMake(_button.frame.size.width / 2.f, _button.frame.size.height / 2.f);
        [_button addSubview:self.showLabel];
    
        
        // 按住按钮后没有松手的动画
        [_button addTarget:self
                    action:@selector(scaleToSmall)
          forControlEvents:UIControlEventTouchDown | UIControlEventTouchDragEnter];
        
        // 按住按钮松手后的动画
        [_button addTarget:self
                    action:@selector(scaleAnimation)
          forControlEvents:UIControlEventTouchUpInside];
        
        // 按住按钮后拖拽出去的动画
        [_button addTarget:self
                    action:@selector(scaleToDefault)
          forControlEvents:UIControlEventTouchDragExit];
    }
    
    - (void)scaleToSmall {
        [UIView animateWithDuration:0.5f animations:^{
            self.showView.bounds          = CGRectMake(0, 0, 300, 90);
            self.showView.backgroundColor = [UIColor redColor];
            self.showLabel.alpha          = 1.f;
        } completion:^(BOOL finished) {
            NSLog(@"%d", finished);
        }];
    }
    
    - (void)scaleAnimation {
        // 获取到当前的状态
        self.showView.bounds                = ((CALayer *)self.showView.layer.presentationLayer).bounds;
        self.showView.layer.backgroundColor = ((CALayer *)self.showView.layer.presentationLayer).backgroundColor;
        self.showLabel.alpha                = ((CALayer *)self.showLabel.layer.presentationLayer).opacity;
        
        // 移除之前的动画状态
        [self.showView.layer removeAllAnimations];
    
        // 做全新的动画
        [UIView animateWithDuration:0.25f animations:^{
            self.showView.bounds          = CGRectMake(0, 0, 300, 0);
            self.showView.backgroundColor = [UIColor clearColor];
            self.showLabel.alpha          = 0.f;
        } completion:^(BOOL finished) {
            
        }];
    }
    
    - (void)scaleToDefault {
        // 获取到当前的状态
        self.showView.bounds                = ((CALayer *)self.showView.layer.presentationLayer).bounds;
        self.showView.layer.backgroundColor = ((CALayer *)self.showView.layer.presentationLayer).backgroundColor;
        self.showLabel.alpha                = ((CALayer *)self.showLabel.layer.presentationLayer).opacity;
        
        // 移除之前的动画状态
        [self.showView.layer removeAllAnimations];
        
        // 做全新的动画
        [UIView animateWithDuration:0.25f animations:^{
            self.showView.bounds          = CGRectMake(0, 0, 300, 0);
            self.showView.backgroundColor = [UIColor clearColor];
            self.showLabel.alpha          = 0.f;
        } completion:^(BOOL finished) {
            
        }];
    }
    
    
    @end

    核心源码:

  • 相关阅读:
    GIS单词汇总
    ArcGIS Server 开发初步 自定义工具
    ArcGIS Server 9.2 实现基于web浏览器的在线编辑
    控制图层是否显示的方法
    地图缓存与瓦片切割步骤
    汉字转拼音缩写(VB版)
    VB的Winsock控件GetData方法获取汉字乱码解决方法
    柱状专题图实现例子
    汉字转拼音缩写(C#版)
    ArcGIS Server .NET ADF中的AJAX之深入浅出/CallbackResult详解
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4232250.html
Copyright © 2020-2023  润新知