定制个性化按钮

效果

说明

通过捕捉一个按钮不同状态的值来定制我们自己的按钮动画,本人仅仅提供了实现的抽象基类以及一个简单的示例,剩下的需要你根据自己的想象力创造了.

源码

https://github.com/YouXianMing/BaseButton

//
//  BaseControl.h
//  BaseButton
//
//  Created by YouXianMing on 15/8/27.
//  Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface BaseControl : UIView

/**
 *  ========================
 *  = override by subclass =
 *  ========================
 *
 *  触发点击事件
 */
- (void)touchEvent;

/**
 *  ========================
 *  = override by subclass =
 *  ========================
 *
 *  拖拽到rect外面触发的事件
 */
- (void)touchDragExit;

/**
 *  ========================
 *  = override by subclass =
 *  ========================
 *
 *  点击事件开始
 */
- (void)touchBegin;

@end
//
//  BaseControl.m
//  BaseButton
//
//  Created by YouXianMing on 15/8/27.
//  Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import "BaseControl.h"

@interface BaseControl ()

@property (nonatomic, strong) UIButton *button;

@end

@implementation BaseControl

- (instancetype)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if (self) {

        [self baseControlSetup];
    }

    return self;
}

- (void)baseControlSetup {

    _button = [[UIButton alloc] initWithFrame:self.bounds];
    [self addSubview:_button];

    // 开始点击
    [_button addTarget:self
                action:@selector(touchBegin)
      forControlEvents:UIControlEventTouchDown | UIControlEventTouchDragEnter];

    // 拖拽到rect外面
    [_button addTarget:self
                action:@selector(touchDragExit)
      forControlEvents:UIControlEventTouchDragExit];

    // 触发事件
    [_button addTarget:self
                action:@selector(touchEvent)
      forControlEvents:UIControlEventTouchUpInside];
}

- (void)touchEvent {

    [NSException raise:NSInternalInconsistencyException
                format:@"对不起,您不能直接调用 ‘%@ %d‘ 中的方法 ‘%@‘,您需要通过继承其子类,在子类中重载该方法",
     [NSString stringWithUTF8String:__FILE__].lastPathComponent, __LINE__, NSStringFromSelector(_cmd)];
}

- (void)touchDragExit {

    [NSException raise:NSInternalInconsistencyException
                format:@"对不起,您不能直接调用 ‘%@ %d‘ 中的方法 ‘%@‘,您需要通过继承其子类,在子类中重载该方法",
     [NSString stringWithUTF8String:__FILE__].lastPathComponent, __LINE__, NSStringFromSelector(_cmd)];
}

- (void)touchBegin {

    [NSException raise:NSInternalInconsistencyException
                format:@"对不起,您不能直接调用 ‘%@ %d‘ 中的方法 ‘%@‘,您需要通过继承其子类,在子类中重载该方法",
     [NSString stringWithUTF8String:__FILE__].lastPathComponent, __LINE__, NSStringFromSelector(_cmd)];
}

@end

细节

时间: 2024-12-31 03:45:11

定制个性化按钮的相关文章

互金时代如何定制个性化信用评分模型

互金时代如何定制个性化信用评分模型 相比起传统金融机构,互联网金融以个性化服务取胜,由此也催生了各类深耕细分市场的互联网金融公司.不过这样一来,原来传统风控的玩法和经验,已经很难满足新兴互联网金融公司的风控需求. 如何用最为省时省力的方法,打造契合自身业务特色的个性化风控模型?如何利用先进的大数据手段,迅速提高风控的效率,降低风控的成本?今天就让处座来介绍一下吧. 风控将成互联网金融发展"痛点" 在经历2013至2014年的爆发式发展之后,互联网金融行业逐渐步入到规范化发展阶段.201

深度定制一个按钮

http://www.cnblogs.com/ygm900/archive/2013/05/28/3104169.html UIButton *btnTemp = [UIButtonbuttonWithType:UIButtonTypeCustom]; 深度定制一个按钮 UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeCustom]; btn1.frame = CGRectMake(0, 0, 200, 140); btn1.cente

定制个性化的FlashPaper生成的文件

1:找到已安装FlashPaper目录下的子目录Interface下的文件DefaultViewer2.swf,在此swf文件的基础上实现自己的修改. 2:利用swf反编译工具,这里推荐 硕思闪客精灵(SWFDecompiler),保存SWFDecompiler反编译过的.fla文件. 3:利用falsh制作工具(如Adobe Flash Professional CS5),打开此fla文件,找到第3个帧,添加下列代码即可实现定制(具体说明可以参考附后资料,隐藏即false,显示即true,请根

定制个性化的DOS界面

对于一个技术宅来说,DOS命令我们再熟悉不过了.每天面对一成不变的"黑窗口",也会感觉到厌烦,因此本人更趋向化定制一款属于我个人风格的DOS界面.. 定制后的界面风格如下图所示: 如何来定制这样一款个性的界面呢?下面我们来一步步操作: 1.复制以下代码,到一个文本文件: @echo offecho --------------------------------echo 我是大佬,我为自己带盐..echo email: [email protected]echo 技术博客: http:

定制个性化App 引领企业跨入互联网时代

中国互联网信息中心CNNIC发布第35次调查报告,报告显示,截至2014年12月,我国网民规模达6.49亿,其中手机网民达5.57亿,较2013年底增加5672万人.网民中使用手机上网人群占比由2013年的81.0%提升至85.8%. 随着科技的发展,我们步入了新社交媒体时代.微信.微博.APP客户端成为了无数人每天必玩的应用.轻触屏幕,快速了解新闻动态.单指滑动屏幕,轻松成就一笔生意--而这些,都是从定制企业APP开始的. 通过企业APP,客户可以随时随地获取品牌信息,快速便捷的查询产品信息,

定制个性化码表技术 ibus

在不同用户的工作环境中,都会根据各自使用的字符集的不同,而需要定制优化各自的输入法码表,例如,在GB18030中的大量汉字,或许因为输入法码表的老旧,而难于利用自己熟悉的“五笔”方法快速录入,同样,需要面对简繁体操作的用户也是如此. 在SCIM中,如需定制或添加用户自定义码表,就需要了解一些相关知识和技术.首先,SCIM的码表目录是在“/usr/share/scim/tables/”中,里边已经存放了很多扩展名为“.bin”的码表文件,同以往其他系统一样,这些都是经过处理后的文件.之前介绍过如何

定制个性化的RPM包

FPM打包工具 FPM的作者是jordansissel FPM的github:https://github.com/jordansissel/fpm FPM功能简单说就是将一种类型的包转换成另一种类型. 1.支持的源类型包 dir         将目录打包成所需要的类型,可以用于源码编译安装的软件包 rpm         对rpm进行转换 gem         对rubygem包进行转换 python      将python模块打包成相应的类型 2.支持的目标类型包 rpm      

Vagrant定制个性化CentOS7虚拟机模板

关于虚拟机模板 想用vagrant搭建hadoop集群,要完成以下准备工作: 三个虚拟机实例操作系统都是CentOS7的server版: 每个实例都要安装同样的应用.关闭防火墙.关闭swap等: 今天就来做个模板,用此模板创建好的虚拟机都已经完成了上述操作: 关于vagrant的安装和基本操作,请参考<Mac下vagrant从安装到体验>: 环境信息 操作系统:macOS Mojave 10.14.6 Vagrant:2.2.5 VirtualBox:6.0.10 创建实例并完成个性化设置 创

【linux】History- Linux下定制个性化history记录

导语 作为Linux管理员,在出现问题的时候,有时候想反查过去某段时间内 那个用户在什么时间执行过什么命令.这个时候就需要用到Linux下面的history功能   说明 作为管理员,希望能将所有的history记录保存自己方便控制的运维主机上面方便同意管理和查阅,不同主机的记录按主机ip分目录存放 管理员可以查阅所有的,但是普通用户只允许创建查阅属于自己的history记录我呢见   脚本 #!/usr/bin/env bash currentip=$(/usr/sbin/ifconfig |