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.源代码地址

转载于:https://my.oschina.net/HYLApple/blog/702546

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值