照片墙

很早以前做的,后面发现了一个类似的第三方,有空把两者结合起来整理一下。

 

 

@property (nonatomic, weak) UIButton *deleteBtn;          //  删除按钮

 

@property (nonatomic, weak) UIImageView *imageView;

 

@end

 

@implementation ZWEditableImageView

 

- (void)setState:(EditablePictureState)state{

    _state = state;

    if (_state == kEditablePictureStateNormal) {

        self.deleteBtn.hidden = YES;

        self.singleChoosedBtn.hidden = NO;

    }else if(_state == kEditablePictureStateDelete){

        self.deleteBtn.hidden = NO;

        self.singleChoosedBtn.hidden = YES;

    }else{

        self.deleteBtn.hidden = YES;

        self.singleChoosedBtn.hidden = NO;

    }

}

 

- (void)setInfo:(LRLWPicturesObject *)info{

    _info = info;

    

    if (info.isChoosed) {

        self.singleChoosedBtn.selected = YES;

    }else{

        self.singleChoosedBtn.selected = NO;

    }

}

 

- (void)setImage:(UIImage *)image{

    _image = image;

    self.imageView.image = image;

}

 

- (void)setScanPicIndex:(NSInteger)scanPicIndex{

    _scanPicIndex = scanPicIndex;

    if (_scanPicIndex != 0 && _state == kEditablePictureStateNormal) {

        [_singleChoosedBtn setTitle:[NSString stringWithFormat:@"%ld",(long)_scanPicIndex] forState:UIControlStateSelected];

    }else{

        [_singleChoosedBtn setTitle:nil forState:UIControlStateSelected];

    }

}

 

- (instancetype)initWithFrame:(CGRect)frame{

    

    if (self = [super initWithFrame:frame]) {

        UIImageView *imageV = [[UIImageView alloc] init];

        imageV.image = [UIImage imageNamed:@"logo"];

        [self addSubview:imageV];

        imageV.layer.masksToBounds = YES; //没这句话它圆不起来

        imageV.layer.cornerRadius = 5.0; //设置图片圆角的尺度

        self.imageView = imageV;

        

        UIButton *deleteBtn = [UIButton buttonWithType:UIButtonTypeCustom];

        [deleteBtn setBackgroundImage:[UIImage imageNamed:@"deleteBtn"] forState:UIControlStateNormal];

        [self addSubview:deleteBtn];

        self.deleteBtn = deleteBtn;

 

        deleteBtn.hidden = YES;

        

        UIButton *singleChoosedBtn = [UIButton buttonWithType:UIButtonTypeCustom];

        [singleChoosedBtn setBackgroundImage:[UIImage imageNamed:@"lightwheel_normal"] forState:UIControlStateNormal];

        [singleChoosedBtn setBackgroundImage:[UIImage imageNamed:@"lightwheel_select"] forState:UIControlStateSelected];

        

        [self addSubview:singleChoosedBtn];

        self.singleChoosedBtn = singleChoosedBtn;

        

    }

    return self;

}

 

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    if (self.state == kEditablePictureStateNormal) {

        ZW_DEBUG_Log(@"Normal状态")

        [self singleChoosedBtnDidClicked:self.singleChoosedBtn];

    }else if (self.state == kEditablePictureStateDelete){

        ZW_DEBUG_Log(@"删除状态");

        [self deleteBtnDidClicked:self.deleteBtn];

    }else if (self.state == kEditablePictureStateScan){

        ZW_DEBUG_Log(@"浏览状态");

        [self scanPicture:self.scanPicIndex];

    }

}

 

- (void)scanPicture:(NSInteger)index{

    // 进入预览模式

    if (![self respondsToSelector:@selector(willScanPicWithIndex:)]) {

        [self.delegate willScanPicWithIndex:index-1];

    }

}

 

- (void)singleChoosedBtnDidClicked:(UIButton *)btn{

    btn.selected = !btn.selected;

    if (![self respondsToSelector:@selector(didClickedSingleChoosedBtn:)]) {

        [self.delegate didClickedSingleChoosedBtn:btn];

    }

}

 

- (void)deleteBtnDidClicked:(UIButton *)btn{

    if (![self respondsToSelector:@selector(didClickedDeleteBtn:)]) {

        [self.delegate didClickedDeleteBtn:btn];

    }

}

 

- (void)layoutSubviews{

    [super layoutSubviews];

    CGFloat selfW = self.frame.size.width;

 

    self.imageView.frame = CGRectMake(0, 0, selfW, selfW);

    self.imageView.contentMode = UIViewContentModeScaleToFill;

    

    CGFloat delBtnWidth = 20;

    self.deleteBtn.frame = CGRectMake(selfW-delBtnWidth+8, -8, delBtnWidth, delBtnWidth);

    

    CGFloat SCBtnWidth = 20;

    self.singleChoosedBtn.frame = CGRectMake(selfW-SCBtnWidth-3, selfW-SCBtnWidth-3, SCBtnWidth, SCBtnWidth);

}

posted @ 2016-02-16 11:25  LazVy  阅读(357)  评论(0编辑  收藏  举报