您的位置:首页 > 移动开发 > IOS开发

iOS屏幕锁实现

2016-06-29 00:00 471 查看
摘要: iOS屏幕锁实现

#####屏幕锁实现
#####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屏幕锁实现