- 浏览: 543188 次
- 性别:
- 来自: 湖南娄底
文章分类
- 全部博客 (252)
- C#资料 (0)
- java资料 (22)
- 数据库资料 (0)
- Java :开发中遇到的问题 (4)
- 书写属于我的人生 (6)
- spring (6)
- hibernate (16)
- struts (17)
- SSH (5)
- Linux操作系统 (1)
- Ext (5)
- Jquery (9)
- Tomcat部署出错 (2)
- xml (5)
- JSON (5)
- javascript 专题 (5)
- 开发环境配置 (2)
- web 开发 (27)
- Eclipse (7)
- Integration (1)
- 解决方案搜罗 (7)
- 网站收藏 (8)
- 测试框架 (1)
- iframe 专题 (6)
- JSTL (2)
- 各种插件收集 (2)
- 权限设计模型探讨 (1)
- DWR (1)
- log4j (3)
- java (11)
- java 格式化 (1)
- 软件工程 (2)
- 乱码专题 (1)
- UML (4)
- java 设计模式 篇 (1)
- 用法收集 (0)
- sourceforge apache solutions (2)
- Struts2 + JPA + Spring 开发 (1)
- 自定义工具箱 (0)
- IDE (4)
- opencms (1)
- jeecms (1)
- ant (0)
- maven (2)
- 数据库连接池 (0)
- spring MVC (0)
- android (1)
- web-server (1)
- iphone-开发环境 (1)
- iphone-软件开发 (6)
- iPhone-软件设计 (1)
- iphone-应用 (3)
- iPhone-设置 (2)
- iphone-软件开发-设计模式篇 (0)
- iphone-软件开发-OC基础 (9)
- iphone-软件开发- UI篇 (9)
- iphone-软件开发-工具类篇 (1)
- iphone-软件开发-第三方篇 (0)
- iphone-软件开发-特效篇 (2)
- iphone-软件开发-动画篇 (1)
- oracle (1)
- Java-Security (0)
- Three20 UI (1)
- IOS-HOW-TO-专题 (1)
- Mark-Develope Issues (1)
- iphone-软件开发- 资料参考篇 (1)
- C 语言-基本语法 (0)
- Java Servlet (2)
- Eclipse optimization (1)
- IOS Basic (0)
- ecl (0)
- FRONT-HTML (0)
- FRONT-JS (0)
- PHP (0)
最新评论
-
qq_29862421:
[[color=brown]color=yellow][url ...
java 上传图片同时获得图片的宽和高 -
hhb19900618:
NSString <==> NSNumber 之前 ...
OC 常用数据类型之间的转换 -
baohuan_love:
果然能解决问题,感谢分享
Tomcat Error Page配置 与 Error Page在IE下不能转发的问题 -
唐丽梅6313:
很细致。。
键盘样式风格有关设置-iOS开发 -
olived:
哥哥,为什么我的没有破解成功,总是提示许可文件丢失!!QQ:3 ...
[软件测试解决方案] soapUI 4.0.1破解方法
tap是指轻触手势。类似鼠标操作的点击。从iOS 3.2版本开始支持完善的手势api:
- tap:轻触
- long press:在一点上长按
- pinch:两个指头捏或者放的操作
- pan:手指的拖动
- swipe:手指在屏幕上很快的滑动
- rotation:手指反向操作
这为开发者编写手势识别操作,提供了很大的方便,想想之前用android写手势滑动的代码(编写android简单的手势切换视图示例 ),尤其感到幸福。
这里写一个简单的tap操作。在下面视图的蓝色视图内增加对tap的识别:
当用手指tap蓝色视图的时候,打印日志输出:
代码很简单,首先要声明tap的recognizer:
UITapGestureRecognizer *recognizer=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
[infoView addGestureRecognizer:recognizer];
[recognizer release];
在这里:
- initWithTarget:self,要引用到Controller,因为一般这部分代码写在controller中,用self;
- action:@selector(handleTapFrom:),赋值一个方法名,用于当手势事件发生后的回调;
- [infoView addGestureRecognizer:recognizer],为view注册这个手势识别对象,这样当手指在该视图区域内,可引发手势,之外则不会引发
对应的回调方法:
-(void)handleTapFrom:(UITapGestureRecognizer *)recognizer{
NSLog(@">>>tap it");
}
controller相关方法完整的代码(包含了一些与本文无关的视图构建代码):
// Implement loadView to create a view hierarchy programmatically,
without using a nib.
- (void)loadView {
//去掉最顶端的状态拦
[[UIApplication sharedApplication] setStatusBarHidden:YES
withAnimation: UIStatusBarAnimationSlide];
UIImage
*image=[UIImage imageNamed:@"3.jpg"];
//创建背景视图
self.view=[[UIView alloc] initWithFrame:[[UIScreen mainScreen]
applicationFrame]];
UIImageView
*backgroudView=[[UIImageView alloc]
initWithImage:image];
[self.view
addSubview:backgroudView];
UIView
*bottomView=[[UIView alloc]
initWithFrame:CGRectMake(0, 1024-70, 768,
70)];
bottomView.backgroundColor=[UIColor
grayColor];
bottomView.alpha=0.8;
//UIButton
*backButton=[[UIButton alloc] initWithFrame:CGRectMake(10, 10, 100,
40)];
UIButton
*backButton=[UIButton buttonWithType:
UIButtonTypeRoundedRect];
[backButton
setTitle:@"ok"
forState:UIControlStateNormal];
backButton.frame=CGRectMake(10, 15, 100,
40);
[bottomView
addSubview:backButton];
[self.view
addSubview:bottomView];
UIView
*infoView=[[UIView alloc] initWithFrame:CGRectMake(200, 700,
768-400, 70)];
infoView.backgroundColor=[UIColor
blueColor];
infoView.alpha=0.6;
infoView.layer.cornerRadius=6;
infoView.layer.masksToBounds=YES;
[self.view
addSubview:infoView];
UITapGestureRecognizer *recognizer=[[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleTapFrom:)];
[infoView
addGestureRecognizer:recognizer];
[recognizer
release];
}
-(void)handleTapFrom:(UITapGestureRecognizer
*)recognizer{
NSLog(@">>>tap
it");
}
翻页效果,类似下面的样子:
在电子书应用中会很常见。这里需要两个要点:
- 翻页动画
- 手势上下轻扫(swipe)的处理
先说一下轻扫(swipe)的实现,可以参考编写简单的手势示例:Tap 了解手势种类。
在viewDidLoad方法中注册了对上、下、左、右四个方向轻松的处理方法:
- (void)viewDidLoad {
UISwipeGestureRecognizer *recognizer;
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionRight)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionUp)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionDown)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
[super viewDidLoad];
可以看到,都是同一个方法,handleSwipeFrom。
在该方法中,再识别具体是哪个方向的轻扫手势,比如判断是向下的轻扫:
-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
NSLog(@"Swipe received.");
if (recognizer.direction==UISwipeGestureRecognizerDirectionDown) {
NSLog(@"swipe down");
判断是向上的轻扫:
if (recognizer.direction==UISwipeGestureRecognizerDirectionUp) {
NSLog(@"swipe up");
有关动画的处理,比如向下(往回)翻页,类似这样:
[UIView beginAnimations:@"animationID" context:nil];
[UIView setAnimationDuration:0.7f];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationRepeatAutoreverses:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];[currentView removeFromSuperview];
[self.view addSubview:contentView];[UIView commitAnimations];
向上(向前)翻页,只需改为:
[UIView beginAnimations:@"animationID" context:nil];
[UIView setAnimationDuration:0.7f];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationRepeatAutoreverses:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];[currentView removeFromSuperview];
[self.view addSubview:contentView];[UIView commitAnimations];
如果是电子书,还需要考虑一个问题,就是有多个页面(图形),比如50页。那么需要有一个数据结构来保存这些页面的图片路径:
- objc数据结构,比如数组
- sqlite数据库表
这样,写一套翻页代码和加载什么图形之间就可以解耦。
本文示例使用的是数组,类似这样:
pages=[[NSArray alloc] initWithObjects:@"1.jpg",@"2.jpg",@"3.jpg",@"4.jpg",@"5.jpg",@"6.jpg",
nil];
图片保存在resources下。
为了能让上页下页翻页的时候找到关联的页面,采用了如下机制:
- 将图片封装为UIImageView显示
- 可以为UIImageView设置一个tag值,值为数组下标+1
- 这样,上级view有方法能根据tag查询到UIImageView,比如:UIView *currentView=[self.view viewWithTag:currentTag];
- 设置一个成员变量currentTag保存当前的tag值
比如这样,当应用加载的时候显示第一页:
currentTag=1;
NSString *path = [[NSBundle mainBundle] pathForResource:@"pageflip1" ofType:@"mp3"];
player=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
//[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];
UIImageView *contentView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
[contentView setImage:[UIImage imageNamed:[pages objectAtIndex:(currentTag-1)]]];
[contentView setUserInteractionEnabled:YES];
contentView.tag=currentTag;
在翻页时的处理:
if (currentTag<[pages count])
{
UIView
*currentView=[self.view
viewWithTag:currentTag];
currentTag++;
UIImageView
*contentView = [[UIImageView alloc] initWithFrame:[[UIScreen
mainScreen] applicationFrame]];
[contentView
setImage:[UIImage imageNamed:[pages
objectAtIndex:(currentTag-1)]]];
[contentView
setUserInteractionEnabled:YES];
contentView.tag=currentTag;
[UIView
beginAnimations:@"animationID"
context:nil];
[UIView
setAnimationDuration:0.7f];
[UIView
setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView
setAnimationRepeatAutoreverses:NO];
[UIView
setAnimationTransition:UIViewAnimationTransitionCurlUp
forView:self.view cache:YES];
[currentView
removeFromSuperview];
[self.view
addSubview:contentView];
[UIView
commitAnimations];
发表评论
-
[转]AddressBook 地址簿 (电话簿) 访问与修改
2013-01-29 14:34 0http://my.oschina.net/chen1061 ... -
IOS xib加载
2013-01-15 20:34 01.方式一: UINib *nib ... -
IOS Content Modes
2012-12-19 12:07 1311Content Modes: View 通过 conte ... -
[转载]UIView的层次结构--code
2012-12-18 15:23 2906转载自:http://blog.csdn.net/theone ... -
UITableViewCell的几种样式设置预览总结
2012-12-13 14:23 1495iOS defines four table-cell sty ... -
打开键盘遮住View的问题解决方法1-IOS开发
2012-10-21 15:51 1012首先我们要知道键盘的高度是固定不变的,不过在IOS 5.0 以 ... -
IOS UIViewController
2012-12-01 12:11 711:生命周期 Q1:什么时候需要实例化一个UIView 设 ... -
IOS 关于分辨率的那点事
2012-09-05 18:32 1071转载自:http://www.cnblogs. ... -
键盘样式风格有关设置-iOS开发
2012-09-04 17:22 18797一、键盘风格 UIKit框架支持8种风格键盘。 ... -
动态改变UITableView中的Cell高度
2012-09-04 17:23 10519往往在开发iPhone的应用过程中用得最多的应该算是UI ... -
UIViewContrller之间的切换有三种方式
2012-09-05 12:21 48781.UIViewContrller之间的切换有三种方 ...
相关推荐
rootroot@rootroot-E400:~/wyb/r58_evb_sc5806/lichee$ ./build.sh config Welcome to mkscript setup progress All available chips: 0. sun50iw1p1 1. sun8iw1p1 2. sun8iw3p1 3. sun8iw5p1 4. sun8iw6p1 5...
使用Paddlehub的分割模型,将一些传统的手势数据进行图像分割,再将ADE2K的数据作为背景,与之合成为复杂背景的手势识别数据。 使用到的五个手势数据: [手势识别]...
多点缩放移动:https://github.com/Almeros/android-gesture-detectors SelectSeatView:https://github.com/twl8023/SelectSeatView/ 功能: 1. 显示座位图 2. 可缩放 3. 可移动 4. 可选座 5....
此控件基本包含所有的的手势操作, 2、基础配置 main项目可以生成jar包引用或者作为另外一个项目引用,但个人更喜欢直接引用代码,方便后续修改,也便于规范命名。 所以,大家可以直接将Main文件中的src的内容...
《Android手势识别技术详解——基于GestureBuilder》 在Android应用开发中,手势识别技术是一种重要的交互方式,它允许用户通过特定的手势进行操作,提升用户体验。GestureBuilder是Android SDK提供的一种工具,...
总之,jQuery.gesture.password.js是一款强大而灵活的手势密码插件,为Web应用提供了现代且用户友好的安全登录解决方案。它的易用性、可定制性和跨平台兼容性使其成为开发者的理想选择,尤其适合在移动优先的应用...
在C++程序中调用C编译的静态库时,可能会遇到“undefined reference to ...”错误,这通常意味着链接器无法找到对应的函数定义。要解决这个问题,我们需要理解C与C++之间的互操作性以及编译和链接过程。...
手势锁定视图由于Genymotion,帧卡住了,,,, wtf =。= 用法: 将JitPack存储库添加到您的构建文件中: repositories { // ... maven { url "https://jitpack.io" }}以以下形式添加依赖项: dependencies { ...
在iOS开发中,"长按结束(防keep)"这一主题主要涉及到手势识别(Gesture Recognizers)和用户交互设计。在iOS应用中,长按手势(UILongPressGestureRecognizer)常用于执行一些特殊操作,如拖放、菜单显示等。"防keep...
本数据集数据取自 https://lttm.dei.unipd.it//downloads/gesture/ 原数据集包含了14个人采集的共1400张样本,共10种手势。包括RGB图像、深度信息等,原图大小1280*960。 本数据集只选用了RGB图像,并将图像缩小为...
手势识别器(Gesture Recognizer)用于识别触摸序列并触发响应事件。当手势识别器识别到一个手势或手势发生变化时,会触发响应事件。UIGestureRecognizer类作为抽象类,不能直接使用。只能使用UIGestureRecognizer的...
在Android开发中,手势(Gesture)和手势识别是提升用户体验的重要技术之一。用户可以通过简单的手势操作,如滑动、点击、捏合等,与应用程序进行交互。本篇将深入探讨自定义手势(gesture)和手势识别,特别是如何...
Sketch是Android上层强大且全面的图片加载器,除了图片加载的必备功能外,还支持GIF,手势缩放,分块显示超大图片,自动校正图片方向,显示视频片段等功能 示例APP 扫描二维码下载或 特性 支持的特性 多种 URI 支持...
资源分类:Python库 所属语言:Python 资源全名:gesture_classifying_model-0.1.10.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
本文对http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/hull/hull.html#hull以及http://www.intorobotics.com/9-opencv-tutorials-hand-gesture-detection-recognition/两个部分进行合并。...
软件主页: http://davidhowecn.googlepages.com/ie6gesture 在IE6的网页界面中, 按住鼠标右键, 拖动鼠标, 然后弹起鼠标右键, 将根据鼠标的移 动方向来完成如下的一些快捷功能: 向左移动 - 返回上一个页面; ...
ASL_Gesture_Recognition入门git clone https://github.com/wnukmat/ASL_Gesture_Recognition数据集https://www.kaggle.com/datamunge/sign-language-mnist/data <br>https://www.bu.edu/av/asllrp/dai-asllvd.html ...
Egret手势识别库egret_gesture目前已实现的手势: 1. Tap(点一下) 2. Double Tap (双击) 3. Pinch(二指往內或往外拨动,平时经常用到的缩放) 4. Rotation(旋转) 5. Swipe(滑动,快速移动) 6. Pan (拖移,慢速移动) 7...
JavaScript Touch事件和Gesture手势在移动设备开发中扮演着至关重要的角色,特别是在构建触摸友好型的Web应用时。本文将深入探讨“js touch触屏gesture手势demo”中的关键知识点,包括Touch事件模型、常见手势识别...
在移动应用开发中,手势识别是提升用户体验的关键因素之一。Titanium Mobile 是一个跨平台的JavaScript框架,允许开发者使用JavaScript来构建原生的iOS和Android应用程序。本篇将深入探讨如何在Titanium Mobile中...