Swift之手势解
来源:互联网 发布:个人网页源码 编辑:程序博客网 时间:2024/05/14 18:42
看到一些APP应用里的手势解锁挺有意思也挺好奇的,所以自己从网上dang了些素材实现了下这个功能。
在这里先记录下一些知识点:
1、绘制九宫格样式的按钮组
//创建九宫格按钮组
func createButton()
{
var secret = 0
for row in0...2
{
for col in 0...2
{
//设置九个按钮的位置,图片
let buttonDistance = 100//间距
let firstBtnPointX = 0//第一个按钮的X
let firstBtnPointY = 0//第一个按钮的Y
let tempX:(CGFloat) =CGFloat(firstBtnPointX + col*buttonDistance)
let tempY:(CGFloat) =CGFloat(firstBtnPointY + row*buttonDistance)
//声明按钮
let btn:(UIButton) =UIButton(type:UIButtonType.Custom)
btn.userInteractionEnabled = false //关闭用户交互
btn.frame = CGRectMake(tempX, tempY, 80, 80)//按钮位置和大小设置
btn.setImage(UIImage(named:"gesture_node_normal"), forState:UIControlState.Normal)//默认
btn.setImage(UIImage(named:"gesture_node_highlighted"), forState:UIControlState.Selected)//选中
btn.tag = secret++ //用来当作密码0-8
self.addSubview(btn)
}
}
}
2、根据触摸获取的坐标点获取按钮
首先根据事件传入的Set<UITouch>获取当前试图中触摸点的位置,在根据触摸点的位置获取按钮。
//获取位置传入当前触摸的视图
let pos:(CGPoint) = (touch?.locationInView(touch!.view))!
//遍历当前View的子视图获取按钮
for btninself.subviews
{
if CGRectContainsPoint(btn.frame, point)
{
return btn as? UIButton
}
}
3、根据手势滑动经过的按钮坐标绘制线
1)需要先定义一个存储纪动经过按钮的数据
2)绘制线条需要监听3个事件分别是:触摸开始、触摸移动、触摸结束将经过的按钮保存到数组中。每次事件结束需要调用self.setNeedsDisplay()来绘制视图
3)使用UIBezierPath对象来绘制连接线:
override func drawRect(rect:CGRect) {
//没有按钮
if self.btnSelectArr.count ==0
{
return //直接返回
}
//有按钮,则绘制
let path:(UIBezierPath) =UIBezierPath()//创建路径
for index in 0...self.btnSelectArr.count -1
{
let btn:(UIButton) =self.btnSelectArr.objectAtIndex(index)as!UIButton
//第一个按钮(每次会在的起点)
if index == 0
{
path.moveToPoint(btn.center)//从第一个按钮开始移动
}
else
{
path.addLineToPoint(btn.center)//连接
}
}
path.lineWidth = 8 //线宽
UIColor.blueColor().set()//颜色
path.stroke()//绘制
}
源码:http://yunpan.cn/c3VdCCzTgBV4E (提取码:3563)
- Swift之手势解
- swift基础之UIAnimation 动画(手势操作)
- 手势 Swift
- 常用手势识别 swift
- swift 手势识别
- swift添加手势操作
- Swift-手势识别
- 添加手势 swift
- swift 手势侧滑
- swift中的手势
- swift 恢复 滑动返回 手势
- Swift iOS- 手势检测详解
- swift 手势相关小知识点
- swift 中手势的使用
- Swift 全屏支持手势返回
- IOS手势识别-UIGestureRecongnizer(swift)
- Swift 手势及其具体识别器
- iOS手势之 响应上下左右滑动手势
- Failed to load JavaHL Library问题
- PostgreSQL SELECT AS 双引号大小写不敏感处理
- Android 更改下拉刷新(使用PulltoRefresh)的下拉动画样式
- iOS开发——定位 获取经纬度
- LeetCode -- Trap Water Rain
- Swift之手势解
- Java中堆内存和栈内存详解
- 使用 Swift 和 Objective-C 执行 iOS 内存管理的 7 个简单技巧
- ssm 电商笔记
- 设置tabbar上文字的大小与颜色
- 在平凡中找到不平凡
- Android Studio 2.0 Preview发布Instant Run功能(内附:AS 2.0Preview 导入以前版本的设置)
- leetcode -- Unique Binary Search Trees II
- UML 序列图