博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编写带有点击特效的UIButton
阅读量:4982 次
发布时间:2019-06-12

本文共 4722 字,大约阅读时间需要 15 分钟。

编写带有点击特效的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

核心源码:

 

转载于:https://www.cnblogs.com/YouXianMing/p/4232250.html

你可能感兴趣的文章