iOS屏幕锁实现

来源:互联网 发布:淘宝微淘推广软件 编辑:程序博客网 时间:2024/05/02 04:18
屏幕锁实现
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
0 0