【原】UIView实现点击着重效果的解决方案

  我们知道,在IOS中UIButton UIControl都有一个默认的选中效果,即点中后会图标会变暗,移开后又恢复正常。如何让UIView UIImageView等这些普通的view也实现同样的效果呢?

  最近的一个项目里面,需要实现一个类似iPad/iPhone的主界面效果,但是不同的是,每个item里面显示图片的都必须是UIImageView,因为icon的图片是从服务端异步下载下来的。而iPad的主界面里面,显示图片的载体应该是一个Button,已经自带着重效果了。现在的任务是实现UIImageView的阴影着重效果。

  其实要实现只需往Item(item = UIImageView + UILabel)添加三个touch事件:

[item addTarget:self action:@selector(itemTouchedUpInside:) forControlEvents:UIControlEventTouchUpInside];
[item addTarget:self action:@selector(itemTouchedUpOutside:) forControlEvents:UIControlEventTouchUpOutside];
[item addTarget:self action:@selector(itemTouchedDown:) forControlEvents:UIControlEventTouchDown];
[item addTarget:self action:@selector(itemTouchedCancel:) forControlEvents:UIControlEventTouchCancel];

  下面我们用改变UImageView的alph透明度来代替阴影着重效果。阴影着重效果很简单,但点击的时候覆盖一层黑色的半透明的View的即可,而代码的位置也跟setAlpha:的位置相对应。

-(void)itemTouchedUpOutside:(MyLauncherItem *)item {item.imagView.alpha = 1;
}
-(void)itemTouchedDown:(MyLauncherItem *)item {item.imageView,alpha = 0.5; 
}
- (void)itemTouchedUpInside:(MyLauncherItem *)item {item.imageView.alpha = 1;
}
- (void)itemTouchedCancel:(MyLauncherItem *)item {item.imageView.alpha = 1;
}
 

其中,只有touchDown才降低alhpa值,其他两个事件都是用来恢复到原先状态的。当我们触摸item时,首先被响应的是touchDown事件,然后接下来响应的是touchUpInside还是touchUpOuside要取决于手指是否移动了。增加touchCancel处理是因为有时会出现按钮按下后恢复不了原状的情况,特别是在暴力测试情况下下,用多跟手指同时滑动图标。

以上就是大体思路。若觉得着重的时间太短,可以在touchUpInside里面写个GDB的dispatch_after延时处理操作,一半只要延时0.05秒最有效果就不错了。

我的办法比较土,如果有更好的方法可以留言交流一下。

转载于:https://www.cnblogs.com/wengzilin/p/3301862.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java oom产生原因_什么是OutOfMemoryError以及查找Java中OOM根本原因的步骤?

该OutOfMemoryError异常被抛出JVM,当JVM没有足够的可用内存,来分配。OutOfMemoryError在Exception类层次结构中属于Error类别。产生OutOfMemoryError我们将分配大量内存,这将耗尽堆内存的存储空间。我们将继续分配内存并达到目标,…

jquery在选择器中使用变量及innerText问题(转载)

转自:http://blog.csdn.net/shineall/article/details/7275449 最近在研究一个投票的小程序,写到获取每个作品的投票按钮及显示票数div的id时,遇到了点问题。 其中gid是一个变量,作为作品的唯一标识。 用dom动态更新当前票数写法如…

vs2010快捷键大全

CtrlE,D ----格式化全部代码 CtrlE,F ----格式化选中的代码 CTRL SHIFT B生成解决方案 CTRL F7生成编译 CTRL O打开文件 CTRL SHIFT O打开项目 CTRL SHIFT C显示类视图窗口 F4显示属性窗口 SHIFT F4显示项目属性窗口 CTRL SHIFT E显示资源视图 F12转到定义 CTRL F1…

猜字小游戏java方法体_java实现猜字小游戏

闲来无事,实现一个猜数字的小游戏,目的是巩固自己的基础知识,培养敲代码的乐趣。首先在项目中所创建的类中导包(视频教程推荐:java课程)import java.util.Scanner;//一个简单的文本扫描器,可以使用正则表达式解析原始类…

java 某天为当年第几周_JAVA 日期 一个时间段总共几周,每一天星期几

/*** 查询一个时间段的总周数和查询当前时间是第几周*paramstart*paramend*return*/private int[] selectWeekNum(Date start,Date end,int week,intflag){java.util.Calendar nowjava.util.Calendar.getInstance();java.util.Calendar c_totaljava.util.Calendar.getInstance(…

Aixs2发布webservice服务

http://www.blogjava.net/pzxsheng/archive/2012/12/21/393319.html 开发前准备: 1、Eclipse Java EE IDE(Juno Service Release 1),这个必须是for J2EE 的IDE,因为发布webservice的插件所需。 下载地址&…

快照java开源_maven快照版本和发布版本

在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。我们知道,maven的依赖管理是基于版本管理的,…

magento -- 修改文件来手动控制编译的开启和关闭

之前遇到一个情况,在编译开启的状态下安装了一个新插件,结果前后 台都不能访问了,这时想去找找是哪里在控制编译的开启和关闭,先把编译关了来保证系统不报错。按照一般的习惯后台数据或配置都是存在于数据库,但找遍数据…

鲶鱼java代码_实验一、求阶乘及计算数学常数E

一、实验目的1、掌握三种流程控制语法,并熟练应用2、了解Java的异常处理机制,会编写相应程序3、掌握方法重载的含义,并熟练应用二、实验内容:1、编写程序,计算n的阶乘(n!),n!&#x…

Linux Shell 002-基础知识

Linux Shell 002-基础知识 本节关键字:Linux、Bash Shell、基础知识、Bash特性 相关指令:bash、rm、cp、touch、date 基础知识 什么是Shell脚本 简单概括:将需要执行的命令保存到文本中,按照顺序执行。 准备描述:sh…

java表达式的类型,Java如何确定三元条件运算符表达式的类型?

Can anyone explain this?public class Test {public static void main(String[] args) {char c A;int i 0;boolean b true;System.out.println(b ? c : i);System.out.println(b ? c : (char)i);System.out.println(b ? c : 0);System.out.println(b ? c : (char)0);}…

java里的sleuth_java基础之spring cloud微服务快速教程之(十一) Sleuth(zipkin) 服务链路追踪...

0、前言微服务架构上众多微服务通过REST调用,可能需要很多个服务协同才能完成一个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂。如何清晰地…

android Activity 之间传递复杂对象

、传递Object有两种方式来传递Object:Serializable和Parcelable2.1 使用Serializable方式前提:Object需要实现Serializable接口用Serializable方式传递Object的语法:bundle.putSerializable(key,object);用Serializable方式接收Object的语法:…

opengl模板缓冲区

相信大家有些人对opengl的模板缓冲区不是很理解,包括我最开始也是,opengl的模板缓冲区其实就是采用过滤的技术来控制那些颜色可以绘制,那些不能进行绘制。这里的过滤技术也就是我们的一个控制方法,主要体现在如下两个函数glStenci…

java ui awt_java试用(3)awt,UI

importjava.awt.*;importjava.awt.event.*;publicclassMyFrameextendsFrame{privateTextField tf;publicstaticvoidmain(String args[ ]){MyFrame frnewMyFrame("Hello Out There!");fr.InitUI();}publicMyFrame (String str){super(str);//调用父类的构造方法}publi…

Linux php 中文乱码解决

在ubuntu下php网页输出乱码,在不涉及数据库编码的情况下: 修改“/etc/php5/apache2/php.ini”将 default_charset "iso-8859-1" 修改为default_charset "utf-8" 然后重启apache: sudo /etc/init.d/apache2 restart 推荐一个自己业…

vue在java中的应用_开发知识-Vue篇:在Vue应用中集成O2OA

在前面的章节中,我们介绍了两种在O2OA中使用Vue开发应用的方式,已经可以满足绝大多数的情况了。如果您考虑完全脱离O2的web服务器,自己搭建web服务器,那就请阅读本章。我们还是使用Vue的Vue-CLI工具,创建Vue应用&#…

java高性能低功耗计算_实现低功耗的高性能深度学习

对于大多数功耗敏感型的嵌入式视觉应用而言 , 搭载专用CNN引擎的视觉处理器可 能是能否满 足设计功 耗 预算的关键区别因素。选择专用CNN引擎似乎是一件理所应当的事情 , 但如何在芯片实现之前就测量 出 功 耗呢?我们假设一项应用的性能阈值对功耗预算有严格要求&am…

C++ 虚函数在基类与派生类对象间的表现及其分析

近来看了侯捷的《深入浅出MFC》,读到C重要性质中的虚函数与多态那部分内容时,顿时有了疑惑。因为书中说了这么一句:使用“基类之指针”指向“派生类之对象”,由该指针只能调用基类所定义的函数,如果要让基类的指针使用…

Android---什么是3G

学习安卓之前我们必须了解什么是3g.这几年随着IT技术的革新。移动互联网已经渐渐的占据了市场的主导地位。而3g技术是移动互联网的一方面体现。那么究竟什么是3g? 3G有三大制式,GSM升级后的WCDMA,CDMA升级后的CDMA2000,以及我国自主开发的TD…