照片墙
很早以前做的,后面发现了一个类似的第三方,有空把两者结合起来整理一下。
@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);
}