仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1773|回复: 19
打印 上一主题 下一主题

[学习教程] IOS教程之iOS开辟进门之――拖动视图仓酷云

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:44:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
CoreAnimation---制作动画很强大很喜欢的框架可以用少量的代码写出漂亮的动画CQuartz2D---强大的2D绘图库COpenGL---不用介绍了超级强大的3D库CCoreImage---准备常识

iOS处置屏幕上的触摸举措,次要触及到以下几个办法:
touchesBegan:withEvent://触摸屏幕的最入手下手被挪用
touchesMoved:withEvent://挪动过程当中被挪用
touchesEnded:withEvent://举措停止时被挪用
touchesCancelled:WithEvent:
从办法的定名能够明晰的看出该办法什么时候被挪用,最初一个对照特别。touchesCancelled:WithEvent:在CocoaTouch必需呼应延续触摸事务的体系中止时挪用。
我们只需重写这些办法,来作我们想要作的事变就能够了。
怎样完成拖动视图?

1.设置userInteractionEnabled属性为YES,同意用户交互。
2.在触摸举措入手下手时纪录肇端点。
3.在挪动过程当中,盘算以后地位坐标与肇端点的差值,即偏移量,而且挪动视图中央点至偏移量巨细的中央。
4.分离限定x坐标、与y坐标,包管用户不成将视图托出屏幕
备注:分离限定x坐标与y坐标的缘故原由是,即便向右拖动不了了,仍需包管能够向下拖动。
完成代码

以子类化UIImageView为例
[plain]

  • #import<UIKit/UIKit.h>

  • @interfaceGragView:UIImageView
  • {
  • CGPointstartPoint;
  • }
  • @end

#import<UIKit/UIKit.h>@interfaceGragView:UIImageView{CGPointstartPoint;}@end

[plain]

  • #import"GragView.h"

  • @implementationGragView

  • -(id)initWithFrame:(CGRect)frame
  • {
  • self=[superinitWithFrame:frame];
  • if(self){
  • //Initializationcode
  • //同意用户交互
  • self.userInteractionEnabled=YES;
  • }
  • returnself;
  • }

  • -(id)initWithImage:(UIImage*)image
  • {
  • self=[superinitWithImage:image];
  • if(self){
  • //同意用户交互
  • self.userInteractionEnabled=YES;
  • }
  • returnself;
  • }

  • -(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event
  • {
  • //保留触摸肇端点地位
  • CGPointpoint=[[touchesanyObject]locationInView:self];
  • startPoint=point;

  • //该view置于最前
  • [[selfsuperview]bringSubviewToFront:self];
  • }

  • -(void)touchesMoved:(NSSet*)toucheswithEvent:(UIEvent*)event
  • {
  • //盘算位移=以后地位-肇端地位
  • CGPointpoint=[[touchesanyObject]locationInView:self];
  • floatdx=point.x-startPoint.x;
  • floatdy=point.y-startPoint.y;

  • //盘算挪动后的view中央点
  • CGPointnewcenter=CGPointMake(self.center.x+dx,self.center.y+dy);


  • /*限定用户不成将视图托出屏幕*/
  • floathalfx=CGRectGetMidX(self.bounds);
  • //x坐标右边界
  • newcenter.x=MAX(halfx,newcenter.x);
  • //x坐标右侧界
  • newcenter.x=MIN(self.superview.bounds.size.width-halfx,newcenter.x);

  • //y坐标同理
  • floathalfy=CGRectGetMidY(self.bounds);
  • newcenter.y=MAX(halfy,newcenter.y);
  • newcenter.y=MIN(self.superview.bounds.size.height-halfy,newcenter.y);

  • //挪动view
  • self.center=newcenter;
  • }

  • /*
  • //OnlyoverridedrawRect:ifyouperformcustomdrawing.
  • //Anemptyimplementationadverselyaffectsperformanceduringanimation.
  • -(void)drawRect:(CGRect)rect
  • {
  • //Drawingcode
  • }
  • */

  • @end

#import"GragView.h"@implementationGragView-(id)initWithFrame:(CGRect)frame{self=[superinitWithFrame:frame];if(self){//Initializationcode//同意用户交互self.userInteractionEnabled=YES;}returnself;}-(id)initWithImage:(UIImage*)image{self=[superinitWithImage:image];if(self){//同意用户交互self.userInteractionEnabled=YES;}returnself;}-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{//保留触摸肇端点地位CGPointpoint=[[touchesanyObject]locationInView:self];startPoint=point;//该view置于最前[[selfsuperview]bringSubviewToFront:self];}-(void)touchesMoved:(NSSet*)toucheswithEvent:(UIEvent*)event{//盘算位移=以后地位-肇端地位CGPointpoint=[[touchesanyObject]locationInView:self];floatdx=point.x-startPoint.x;floatdy=point.y-startPoint.y;//盘算挪动后的view中央点CGPointnewcenter=CGPointMake(self.center.x+dx,self.center.y+dy);/*限定用户不成将视图托出屏幕*/floathalfx=CGRectGetMidX(self.bounds);//x坐标右边界newcenter.x=MAX(halfx,newcenter.x);//x坐标右侧界newcenter.x=MIN(self.superview.bounds.size.width-halfx,newcenter.x);//y坐标同理floathalfy=CGRectGetMidY(self.bounds);newcenter.y=MAX(halfy,newcenter.y);newcenter.y=MIN(self.superview.bounds.size.height-halfy,newcenter.y);//挪动viewself.center=newcenter;}/*//OnlyoverridedrawRect:ifyouperformcustomdrawing.//Anemptyimplementationadverselyaffectsperformanceduringanimation.-(void)drawRect:(CGRect)rect{//Drawingcode}*/@end

最终效果


<br>

我当时刚学iOS开发的时候一样的感觉总想知道原理内部怎么回事感觉在像在雾里但是iOS开发就是这样他是封闭的本身就是在雾里...
沙发
发表于 2015-1-19 17:04:11 | 只看该作者
才在自己的Windows电脑上安装配置成功了一个完美的Mac OS X Lion(10.7.4)系统,而且下载了Xcode4.5的最新版本。虽然不能实机调试,但是作为iOS开发学习已经非常完美了。
不帅 该用户已被删除
板凳
发表于 2015-1-24 05:03:48 | 只看该作者
其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。
因胸联盟 该用户已被删除
地板
发表于 2015-1-25 20:44:16 来自手机 | 只看该作者
到大三时,学院与我去培训的机构成立了实习基地,并让我们寒假去实习了一段时间,感觉还不错,于是在大四的时候去培训了
愤怒的大鸟 该用户已被删除
5#
发表于 2015-1-29 06:54:37 | 只看该作者
边吃零食边看Stanford的视频教程
若相依 该用户已被删除
6#
发表于 2015-2-2 12:44:41 | 只看该作者
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
柔情似水 该用户已被删除
7#
发表于 2015-2-6 00:05:08 | 只看该作者
以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。
冷月葬花魂 该用户已被删除
8#
发表于 2015-2-7 17:53:50 | 只看该作者
近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来,
谁可相欹 该用户已被删除
9#
发表于 2015-2-22 19:56:54 | 只看该作者
其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。
金色的骷髅 该用户已被删除
10#
发表于 2015-3-5 20:13:57 | 只看该作者
重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。
山那边是海 该用户已被删除
11#
发表于 2015-3-6 19:35:17 | 只看该作者
down下code4app网站的每个分类的代码挨着看
只想知道 该用户已被删除
12#
发表于 2015-3-8 17:18:14 | 只看该作者
众多研发人员积极参与到iOS平台的开发中来也就不足为奇了。
再现理想 该用户已被删除
13#
发表于 2015-3-16 07:31:13 | 只看该作者
中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,
小妖女 该用户已被删除
14#
发表于 2015-3-22 21:09:22 | 只看该作者
边吃零食边看Stanford的视频教程
变相怪杰 该用户已被删除
15#
发表于 2015-3-27 09:28:40 | 只看该作者
开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦
活着的死人 该用户已被删除
16#
发表于 2015-3-27 09:55:48 | 只看该作者
培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。
精灵巫婆 该用户已被删除
17#
发表于 2015-4-9 10:04:57 | 只看该作者
才在自己的Windows电脑上安装配置成功了一个完美的Mac OS X Lion(10.7.4)系统,而且下载了Xcode4.5的最新版本。虽然不能实机调试,但是作为iOS开发学习已经非常完美了。
爱飞 该用户已被删除
18#
 楼主| 发表于 2015-4-22 04:14:18 | 只看该作者
开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦
简单生活 该用户已被删除
19#
发表于 2015-4-24 06:43:49 | 只看该作者
iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。
莫相离 该用户已被删除
20#
发表于 2015-4-25 15:55:28 | 只看该作者
在此,某不才愿将安装成功的Mac OS X系统的vmware虚拟机向有志学习iOS开发的各位学友们免费开放出来,经测试,可以在WindowsXP/Win7系统上完美运行,即便你的机器只有2GB内存。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-29 08:16

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表