效果
在做界面时,遇到要写选中图片,产生选中效果的需求。
无他,想了个笨办法,用一个button挡在图片前,给button设置点击事件,改变按钮背景颜色。
效果如下:
未选中
选中
实现
总代码
#import "ViewController.h"
@interface ViewController ()
@property UIImageView *image;
@property UIButton *btn;
@property UIImageView *okImage;
@property NSInteger *flag;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
_flag = 0;
_image = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 121, 121)];
_image.image = [UIImage imageNamed:@"1.jpg"];
[self.view addSubview:_image];
_btn = [[UIButton alloc]initWithFrame:_image.frame];
_btn.backgroundColor = [UIColor clearColor];
_btn.alpha = 0.6;
[_btn addTarget:self action:@selector(press) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_btn];
}
- (void)press{
_okImage = [[UIImageView alloc]initWithFrame:CGRectMake(90, 5, 20, 20)];
_okImage.image = [UIImage imageNamed:@"勾.png"];
if (_flag == 0) {
_btn.backgroundColor = [UIColor blackColor];
//添加右上角的对勾
[_btn addSubview:_okImage];
_flag = 1;
} else {
_btn.backgroundColor = [UIColor clearColor];
_flag = 0;
//将右上角的UIImageView删去
[_btn.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
}
}
@end
这里要注意,不可以把按钮的透明度设为0,否则按钮就相当于隐藏了,无法触发点击事件。