iOS屏幕锁实现
2016-06-29 00:00
471 查看
摘要: iOS屏幕锁实现
#####屏幕锁实现
#####1.九宫格的实现
九宫格以前单独说明过
九宫格长相
图片
添加按钮
九宫格布局
#####2.添加手势,两种方式
1.图形界面操作
操作图片
2.
2。代码实现
#####3.画线与图片选中时的高亮
#####4.源代码地址
1.代码实现github
2.图形实现github
#####屏幕锁实现
#####1.九宫格的实现
九宫格以前单独说明过
九宫格长相
图片
添加按钮
#pragma mark - awakeFromNib -(void) awakeFromNib{ //代码添加与图形上添加手势不可同时存在,如:当拉了一个pan手势时,没有添加响应方法,转而代码实现,会有问题(以验证) [self setPan]; // _selectedBtnArrM=[NSMutableArray array]; for (int i=0; i<9; i++) { UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom]; //醉了 // [btn setBackgroundImage:[UIImage imageNamed:@"gesture_node_normal"] forState:UIControlStateNormal]; // [btn setBackgroundImage:[UIImage imageNamed:@"gesture_node_highlighted"] forState:UIControlStateSelected]; [btn setImage:[UIImage imageNamed:@"gesture_node_normal"] forState:UIControlStateNormal]; [btn setImage:[UIImage imageNamed:@"gesture_node_highlighted"] forState:UIControlStateSelected]; [btn setUserInteractionEnabled:NO]; [self addSubview:btn]; } }
九宫格布局
#pragma mark -layoutSubviews -(void)layoutSubviews{ [super layoutSubviews]; CGFloat marginW=10; CGFloat marginH=84; NSInteger rowCounts=3; // NSLog(@"%f",self.bounds.size.width); CGFloat spaceW=(self.bounds.size.width-2*marginW-rowCounts*74)/(rowCounts-1); NSInteger counts=self.subviews.count; for (int m=0; m<counts; m++) { // NSLog(@"%i %i",(m%3),(m/3)); //NSLog(@"%f - %f ",marginW+(m%3)*spaceW,100+(m/3)*marginH); UIButton *btn=self.subviews[m]; btn.frame=CGRectMake(marginW+(m%3)*(spaceW+74), 100+(m/3)*(marginH+74), 74, 74); } }
#####2.添加手势,两种方式
1.图形界面操作
操作图片
2.
2。代码实现
#pragma mark - setPan -(void) setPan{ UIPanGestureRecognizer *pan=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)]; [self addGestureRecognizer:pan]; } -(void) pan:(UIPanGestureRecognizer *) pan{ _curP=[pan locationInView:self]; for (UIButton *btn in self.subviews) { if (CGRectContainsPoint(btn.frame ,_curP)) { btn.selected=YES; [self.selectedBtnArrM addObject:btn]; } } [self setNeedsDisplay]; if (pan.state==UIGestureRecognizerStateEnded) { //不行??? // [self.selectedBtnArrM makeObjectsPerformSelector:@selector(setSelected:) withObject:@(NO)]; for (UIButton *btn in self.selectedBtnArrM) { btn.selected=NO; } [self.selectedBtnArrM removeAllObjects]; } }
#####3.画线与图片选中时的高亮
#pragma mark - setPan -(void) setPan{ UIPanGestureRecognizer *pan=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)]; [self addGestureRecognizer:pan]; } -(void) pan:(UIPanGestureRecognizer *) pan{ _curP=[pan locationInView:self]; for (UIButton *btn in self.subviews) { if (CGRectContainsPoint(btn.frame ,_curP)) { btn.selected=YES; [self.selectedBtnArrM addObject:btn]; } } [self setNeedsDisplay]; if (pan.state==UIGestureRecognizerStateEnded) { //不行??? // [self.selectedBtnArrM makeObjectsPerformSelector:@selector(setSelected:) withObject:@(NO)]; for (UIButton *btn in self.selectedBtnArrM) { btn.selected=NO; } [self.selectedBtnArrM removeAllObjects]; } }
#####4.源代码地址
1.代码实现github
2.图形实现github
相关文章推荐
- iOS屏幕锁实现
- GCD
- iOS好用的第三方侧边栏控件——MMDrawerController
- iOS 进度框(二) SVProgressHUD
- iOS 10 获取相册相机权限
- iOS 10 开发 注意事项 Privacy隐私 权限申请 必须设置"Privacy - XXX"提示内容
- ios常见加密解密方法
- CocoaPods安装及使用
- 李洪强iOS开发之OC[003] - 用钥匙串存储信息模拟登陆
- 装饰模式在iOS开发中的应用
- 李洪强iOS开发之OC[002] - OC中注释以及@符号的使用
- 李洪强iOS开发OC[001]-NSLog函数的使用方法
- iOS开发 - 第03篇 - 多线程 - 02 - GCD & 单例 & NSOperation
- 下拉选择菜单封装
- iOS 如何关联xib和控制器
- iOS开发之Architectures设置
- iOS中 如何将自己的框架更新到cocopods上 韩俊强的博客
- iOS中 如何将自己的框架更新到cocopods上 韩俊强的博客
- 深入理解 KVC\KVO 实现机制 — KVC
- iOS开发 - 第03篇 - 多线程 - 01 - 多线程基础