手势解锁代码实现
来源:互联网 发布:apache jmeter 下载 编辑:程序博客网 时间:2024/05/22 05:20
#import "btnsView.h"
@interface btnsView ()
// 存放被选中的按钮
@property(nonatomic,strong) NSMutableArray *secBtns;
@property(nonatomic,assign) CGPoint point;
@end
@implementation btnsView
- (NSMutableArray *)secBtns
{
if (_secBtns ==nil) {
NSMutableArray *arrayM = [NSMutableArrayarray];
_secBtns = arrayM;
}
return_secBtns;
}
- (void)awakeFromNib
{// 添加按钮
[self setUp];
// 给btns添加拖动手势
UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizeralloc] initWithTarget:selfaction:@selector(pan:)];
[self addGestureRecognizer:panGestureRecognizer];
}
// 拖动手势业务逻辑
- (void)pan:(UIPanGestureRecognizer *)pan
{
// 获取当前点
if (pan.state ==UIGestureRecognizerStateChanged) {
CGPoint panP = [pan locationInView:pan.view];
self.point = panP;
for (int i =0; i < self.subviews.count; i++) {
UIButton *btn = self.subviews[i];
if (CGRectContainsPoint(btn.frame,panP) && btn.selected ==NO) {
btn.selected = YES;
[self.secBtnsaddObject:btn];
}
[self setNeedsDisplay];
}
}
}
// 绘制路径
- (void)drawRect:(CGRect)rect {
if (self.secBtns.count) {
UIBezierPath *path = [UIBezierPathbezierPath];
for (int i =0; i < self.secBtns.count; i++) {
UIButton *btn = self.secBtns[i];
if (i == 0) {
[path moveToPoint:btn.center];
}else
{
[path addLineToPoint:btn.center];
}
}
[path addLineToPoint:self.point];
[[UIColor redColor] set];
[path setLineJoinStyle:kCGLineJoinRound];
[path setLineCapStyle:kCGLineCapRound];
[path setLineWidth:10];
[path stroke];
}
}
// 添加按钮
- (void)setUp
{
// 添加按钮
for (int i =0; i<9; i++) {
UIButton *btn = [[UIButtonalloc] init];
btn.userInteractionEnabled =NO;
// 确定按钮的大小尺寸
CGFloat btnWH = 74;
// 计算列数和行数
CGFloat col = i%3;
CGFloat row = i/3;
// 计算间隙
CGFloat space = (self.bounds.size.width -3*btnWH)/4;
CGFloat btnX = space + col *(btnWH + space);
CGFloat btnY = space + row *(btnWH + space);
// 确定按钮的frame
btn.frame = CGRectMake(btnX, btnY, btnWH, btnWH);
// 设置按钮图片
[btn setImage:[UIImageimageNamed:@"gesture_node_normal"]forState:UIControlStateNormal];
[btn setImage:[UIImageimageNamed:@"gesture_node_highlighted"]forState:UIControlStateSelected];
// 添加按钮到btnsView中
[self addSubview:btn];
}
}
@end
- 手势解锁代码实现
- 手势解锁的实现
- Android实现手势解锁
- 手势解锁实现PinLockView
- HTML5实现屏幕手势解锁
- android 手势解锁的实现
- 手势密码 图形解锁 实现
- 实现一个简单的手势解锁
- 【UI基础】手势解锁简单实现
- android利用paint 实现手势解锁
- Appium实现app手势密码解锁 LockViewPatter
- 用 canvas 实现 Web 手势解锁
- 用 canvas 实现 Web 手势解锁
- 手势解锁
- 手势解锁
- 手势解锁
- 手势解锁
- 手势解锁
- Lisp入门教程
- 5. 尚硅谷_佟刚_JavaWEB_Servlet 的配置及生命周期方法.wmv
- 单例模式7种实现
- 循环队列的实现
- android--线程
- 手势解锁代码实现
- bzoj1251 序列终结者
- Java反射机制入门
- 手势
- hitTest方法底层实现
- android 4 DnsPinger一点分析
- hitTest方法底层实现(2)
- 图片水印
- 使用WinWebMail 简单搭建一个局域网邮件服务 并 测试