UITouch 的使用

直接上代码:

touch 的四大状态,:
//
//  TouchView.m
//  UI_practice_04
//
//  Created by lanouhn on 15/4/22.
//  Copyright (c) 2015年 huangyankai. All rights reserved.
//

#import "TouchView.h"
//延展
@interface TouchView ()
@property (nonatomic,assign) CGPoint startPoint;//记录当前起始点坐标

@end

@implementation TouchView
//方法是功能片段的封装。
//触摸开始  表示手指接触到屏幕时,会触发
//图层

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"%s",__FUNCTION__);
//    CGcolor另一个框架   给UIColor发一个消息,转化为CGColor 设置阴影
//    设置阴影的颜色
    self.layer.shadowColor = [[UIColor lightGrayColor] CGColor];
//    设置阴影的偏移量
    self.layer.shadowOffset = CGSizeMake(10, 10);
//    设置阴影不透明度
    self.layer.shadowOpacity = 0.9;
//    角半径
    self.layer.cornerRadius = 100;

    UITouch *aTouch = [touches anyObject];
//    获取触摸开始点并保存
    self.startPoint = [aTouch locationInView:self.superview];
}

//触摸移动,当手指触摸屏幕并产生移动的时候,会重复调用此方法
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"%s",__FUNCTION__);
    UITouch *aTouch = [touches anyObject];
//    父视图上的一个点
    CGPoint currentPoint = [aTouch locationInView:self.superview];
//    通过移动产生的当前触摸点和上一个触摸点的X和Y轴的增量
    CGFloat delta_x = currentPoint.x - self.startPoint.x;
    CGFloat delta_y = currentPoint.y - self.startPoint.y;
//    通过视图当前起始点坐标以及delta_x和delta_y来推算新的起始点坐标
    CGRect frame = self.frame;
    frame.origin.x += delta_x;
    frame.origin.y += delta_y;
    self.frame = frame;
//   将当前点保存下来,成为下一次移动产生的新的点的计算增量依据
    self.startPoint = currentPoint;



}

//触摸结束,表示手指离开屏幕时触发
//NSSet集合,无序性
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"%s",__FUNCTION__);
    self.layer.shadowColor = nil;
    self.layer.shadowOffset = CGSizeZero;
    self.layer.shadowOpacity = 0;

}
//触摸取消,表示此时手指并未离开屏幕,但是由于一些打断(来电话)而失去与该视图的交互
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"%s",__FUNCTION__);
}
@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值