iOS长按控件
前言
网上看到一个button的长按控件效果不错,一个菱形从中间向两边增大,研究了下
原理
上图红色是控件上面放了视图,从上到下分别是view,normalLable,highlightLabel,button
其中View是顺时针旋转了45度
通过点击控件触发里面的按钮的监听事件
按下没有松手:增大view的高度,改变两个label的透明度
抬起 :缩小view的高度,改变两个label的透明度
后面设置超出父视图不显示就可以把多余的黑色隐藏了,实现了中心向外面扩散
部分代码:
长按监听
- (void)buttonTouchDownAndDragEnter {
NSLog(@"长按不松"); [self removeShowViewAndLabelLayer];
[UIView animateWithDuration:(self.toEndDuration <= ? TIME_END_DURATION : self.toEndDuration)
animations:^{
[self showShowView];
} completion:^(BOOL finished) {
if (finished == YES) {
self.isEND = YES;
}
}];
}
部分方法
- (void)showShowView {
self.showView.bounds = CGRectMake(, , SHOW_VIEW_WIDTH,
(self.animationWidth <= ? SHOW_VIEW_WIDTH : self.animationWidth));
self.showView.alpha = ; self.normalLabel.alpha = .f;
self.highlightLabel.alpha = .f; } //隐藏showView,改变普通和高亮状态 - (void)hiddenShowView {
self.showView.bounds = CGRectMake(, , SHOW_VIEW_WIDTH, );
self.showView.alpha = ; self.normalLabel.alpha = .f;
self.highlightLabel.alpha = .f; } //移除之前的动画
- (void)removeShowViewAndLabelLayer {
self.showView.bounds = ((CALayer *)self.showView.layer.presentationLayer).bounds;
self.showView.alpha = ((CALayer *)self.showView.layer.presentationLayer).opacity; self.normalLabel.alpha = ((CALayer *)self.normalLabel.layer.presentationLayer).opacity;
self.highlightLabel.alpha = ((CALayer *)self.highlightLabel.layer.presentationLayer).opacity; // 移除之前的动画状态
[self.showView.layer removeAllAnimations];
}
demo链接:http://pan.baidu.com/s/1eRckm4q
iOS长按控件的更多相关文章
- 无比迅速敏捷地开发iOS超精美控件
目录 前言 设计 编码 PaintCode 前言 自从人生第一篇博客<iOS中的预编译指令的初步探究>问世以来 浏览量竟然达到了360多,(路过的大神勿笑!)这些浏览量使我兴奋异常但又令我 ...
- 从0到1搭建移动App功能自动化测试平台(2):操作iOS应用的控件
转自:http://debugtalk.com/post/build-app-automated-test-platform-from-0-to-1-Appium-interrogate-iOS-UI ...
- iOS基础UI控件介绍-Swift版
iOS基础UI控件总结 iOS基础控件包括以下几类: 1.继承自NSObject:(暂列为控件) UIColor //颜色 UIImage //图像 2.继承自UIView: 只能相应手势UIGest ...
- Android-PickerView【仿iOS的PickerView控件,并封装了时间选择和选项选择这两种选择器】使用
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 本文主要演示Android-PickerView的选项选择器.时间选择器的简单运用.由于每一个版本略有不用,所以实际使用方式以git ...
- TYAttributedLabel——简单,强大的iOS属性文本控件
本文转载至 http://www.mobile-open.com/2015/86578.html TYAttributedLabel 简单,强大的属性文本的控件(无需了解CoreText),支持图文混 ...
- IOS的各种控件(转载,防止遗忘)
UITextView控件的详细讲解 感觉写的相当不错,而且很全就直接转载了 1.创建并初始化 创建UITextView的文件,并在.h文件中写入如下代码: #import <UIKit/UIKi ...
- IOS自定义日历控件的简单实现(附思想及过程)
因为程序要求要插入一个日历控件,该空间的要求是从当天开始及以后的六个月内的日历,上网查资料基本上都说只要获取两个条件(当月第一天周几和本月一共有多少天)就可以实现一个简单的日历,剩下的靠自己的简单逻辑 ...
- Android 实现 IOS相机滑动控件
IOS相比于Android,动画效果是一方面优势,IOS相机切换时滑动的动画很不错,看着是有一个3D的效果,而且变化感觉很自然.Android也可以通过Graphics下面的Camera可以实现3D ...
- 如何自定义iOS中的控件
本文译自 How to build a custom control in iOS .大家要是有什么问题,可以直接在 twitter 上联系原作者,当然也可以在最后的评论中回复我. 在开发过程中,有时 ...
随机推荐
- {ubuntu}乱七八糟重命名为1 2 3.....png
i=; for f in *.png; do mv "$f" ${i}.png; ((i++)); done 网上找了个测试的数据集,发现读取时候,要重命名一下 一片帖子问了类似的 ...
- Windows系统下Android开发环境搭建
“工具善其事,必先利其器”.要想学好Android,搭建好Android开发环境是一个良好的开端. Windows系统下Android开发环境主要有4个大的步骤.分别是: 1.JDK的安装 2.ecl ...
- SQL问题:未启用当前数据库的 SQL Server Service Broker
数据库分离后,附加回到数据库,然后在程序中打开调用数据库的页面,出现如下问题:“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数 ...
- (六)maven之本地仓库
本地仓库 ① 运行机制: 当用户在pom.xml文件中添加依赖jar包时,maven会先从本地仓库查找,如果这个jar包在本地仓库中找不到,就从中央仓库下载到本地仓库,中央仓库是maven默认 ...
- Python 学习日志9月18日
今天早晨学习了<Head First HTML and CSS>,第10章“div and span”. 看完并且做了练习也算是对div和span扫了个盲,需要在实践练习中加强理解与掌握. ...
- mysql 存在更新,不存在插入
String sql = "insert into wb_result " + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ...
- Javascript根据指定下标或对象删除数组元素
删除数组元素在工作中经常会用到,本文讲解一下Javascript根据下标删除数组元素的方法,需要了解的朋友可以参考下 将一下代码放在全局js文件中: Js代码 /** *删除数组指定下标或指定对象 * ...
- Python协程函数
1 协程函数 1.1 协程函数理解 协程函数就是使用了yield表达式形式的生成器 def eater(name): print("%s eat food" %name) whil ...
- github+hexo+themes搭建简易个性主题博客
0x00 install Node.js and git 安装Node.js:http://www.runoob.com/nodejs/nodejs-install-setup.html 安装git ...
- WPF显示尺寸与设备无关问题
WPF单位 WPF窗口以及其中的所有元素都是用与设备无关的单位进行度量.一个与设备无关的单位被定义为1/96英寸.WPF程序统一用下面一个公式来定义物理单位尺寸: [ 物理单位尺寸(像素)] = [ ...