navicat怎么添加check约束
293
2022-09-06
IOS 拖动视图
iOS处理屏幕上的触摸动作,主要涉及到以下几个方法:
touchesBegan:withEvent: //触摸屏幕的最开始被调用
touchesMoved:withEvent: //移动过程中被调用
touchesEnded:withEvent: //动作结束时被调用
touchesCancelled:WithEvent:
从方法的命名可以清晰的看出该方法何时被调用,最后一个比较特殊。touchesCancelled:WithEvent:在Cocoa Touch必须响应持续触摸事件的系统中断时调用。
我们只要重写这些方法,来作我们想要作的事情就可以了。
如何实现拖动视图?
1.设置userInteractionEnabled属性为YES,允许用户交互。
2.在触摸动作开始时记录起始点。
3.在移动过程中,计算当前位置坐标与起始点的差值,即偏移量,并且移动视图中心点至偏移量大小的地方。
4.分别限制x坐标、与y坐标,保证用户不可将视图托出屏幕
备注:分别限制x坐标与y坐标的原因是,即使向右拖动不了了,仍需保证可以向下拖动。
实现代码
以子类化UIImageView为例
[plain]1. #import
[plain]1. #import"GragView.h"2. 3. @implementationGragView4. 5. -(id)initWithFrame:(CGRect)frame6. {7. self=[superinitWithFrame:frame];8. if(self){9. //Initializationcode10. //允许用户交互11. self.userInteractionEnabled=YES;12. }13. returnself;14. }15. 16. -(id)initWithImage:(UIImage*)image17. {18. self=[superinitWithImage:image];19. if(self){20. //允许用户交互21. self.userInteractionEnabled=YES;22. }23. returnself;24. }25. 26. -(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event27. {28. //保存触摸起始点位置29. CGPointpoint=[[touchesanyObject]locationInView:self];30. startPoint=point;31. 32. //该view置于最前33. [[selfsuperview]bringSubviewToFront:self];34. }35. 36. -(void)touchesMoved:(NSSet*)toucheswithEvent:(UIEvent*)event37. {38. //计算位移=当前位置-起始位置39. CGPointpoint=[[touchesanyObject]locationInView:self];40. floatdx=point.x-startPoint.x;41. floatdy=point.y-startPoint.y;42. 43. //计算移动后的view中心点44. CGPointnewcenter=CGPointMake(self.center.x+dx,self.center.y+dy);45. 46. 47. /*限制用户不可将视图托出屏幕*/48. floathalfx=CGRectGetMidX(self.bounds);49. //x坐标左边界50. newcenter.x=MAX(halfx,newcenter.x);51. //x坐标右边界52. newcenter.x=MIN(self.superview.bounds.size.width-halfx,newcenter.x);53. 54. //y坐标同理55. floathalfy=CGRectGetMidY(self.bounds);56. newcenter.y=MAX(halfy,newcenter.y);57. newcenter.y=MIN(self.superview.bounds.size.height-halfy,newcenter.y);58. 59. //移动view60. self.center=newcenter;61. }62. 63. /*64. //OnlyoverridedrawRect:ifyouperformcustomdrawing.65. //Anemptyimplementationadverselyaffectsperformanceduringanimation.66. -(void)drawRect:(CGRect)rect67. {68. //Drawingcode69. }70. */71. 72. @end
效果图
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~