博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定制个性化按钮
阅读量:6246 次
发布时间:2019-06-22

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

定制个性化按钮

 

效果

 

说明

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

 

源码

////  BaseControl.h//  BaseButton////  Created by YouXianMing on 15/8/27.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import 
@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

细节

转载地址:http://kcmia.baihongyu.com/

你可能感兴趣的文章
非监督学习算法:异常检测
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
我的友情链接
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
VS2010远程调试C#程序
查看>>
windows查看端口占用
查看>>
Yii用ajax实现无刷新检索更新CListView数据
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>
Apache Pulsar中的地域复制,第1篇:概念和功能
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
计算机网络与Internet应用
查看>>
linux性能剖析工具
查看>>
flutter中的异步
查看>>
计算机高手也不能编出俄罗斯方块——计算机达人成长之路(16)
查看>>
# 2017-2018-1 20155224 《信息安全系统设计基础》第七周学习总结
查看>>
scikit-learn预处理实例之一:使用FunctionTransformer选择列
查看>>
Mars说光场(3)— 光场采集
查看>>