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

本文共 2439 字,大约阅读时间需要 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://gdhql.baihongyu.com/

你可能感兴趣的文章
如烟花般绚丽的区块链平台,剥下代币狼皮后如何生存?
查看>>
App爬虫神器mitmproxy和mitmdump的使用
查看>>
再说swift namespace
查看>>
初学 Android 架构组件之 ViewModel
查看>>
iOS AOP 框架 - Aspects 源码解读
查看>>
获取iOS客户端屏幕最上面的视图控制器
查看>>
iOS RunLoop分析
查看>>
canvas系列教程08-canvas各种坑
查看>>
单线程的js是如何工作的
查看>>
localStorage
查看>>
循环中的异步&&循环中的闭包
查看>>
外墙清洗机器人现身多幢大楼,清洗前后泾渭分明!
查看>>
算法与数据结构之枚举算法
查看>>
为什么Python发展这么快,有哪些优势?
查看>>
sublime-text3 安装 emmet 插件
查看>>
Promise 的then 里发生了什么
查看>>
【跃迁之路】【719天】程序员高效学习方法论探索系列(实验阶段476-2019.2.9)...
查看>>
微信小程序--------语音识别(前端自己也能玩)
查看>>
JS每日一题:什么情况下适合使合vuex?Vuex使用中有几个步骤?
查看>>
Data Lake Analytics: 以SQL方式查询Redis数据
查看>>