思路:在一个view上建两层button 然后改变最上面一层的背景颜色
效果图
这里用了button 分类
//声明
@interface UIButton (CategoryButton)
+ (UIButton *)roundRectButtonWithFrame:(CGRect)frame title:(NSString *)title target:(id)target action:(SEL)action;
+ (UIButton *)buttonWithType:(UIButtonType)type frame:(CGRect)frame title:(NSString *)title target:(id)target action:(SEL)action;
@end
//实现
@implementation UIButton (CategoryButton)
+ (UIButton *)roundRectButtonWithFrame:(CGRect)frame title:(NSString *)title target:(id)target action:(SEL)action
{
return [UIButton buttonWithType:UIButtonTypeRoundedRect frame:frame title:title target:target action:action];
}
+ (UIButton *)buttonWithType:(UIButtonType)type frame:(CGRect)frame title:(NSString *)title target:(id)target action:(SEL)action
{
UIButton *button = [UIButton buttonWithType:type];
button.frame = frame;
[button setTitle:title forState:UIControlStateNormal];
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
button.layer.borderWidth=4;
button.layer.contentsScale=5;
return button;
}
@end
//root.h文件
@interface RootViewController : UIViewController
@property(assign,nonatomic)int state;// 灯的状态
@property(assign,nonatomic)int RandomClick;//随机点击次数
@end
//实现
- (void)viewDidLoad
{
[super viewDidLoad];
// 添加背景图片
// UIView *registeredView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
// UIImage *img=[UIImage imageNamed:@"2.png"];
// [registeredView setBackgroundColor:[UIColor colorWithPatternImage:img]];
// 设置背景颜色
// registeredView.backgroundColor=[UIColor redColor];
// [self.view addSubview:registeredView];
CGFloat x=0;
CGFloat y=0;
UIView *downView = [[UIView alloc]initWithFrame:self.view.frame];
[self.view addSubview:downView];
// downView.tag = 10000;
UIView *downView2 = [[UIView alloc]initWithFrame:self.view.frame];
[self.view addSubview:downView2];
downView2.tag = 20000;
for (int i=1; i<6; i++) {
for (int j=1; j<6; j++) {
UIButton *button1=[UIButton roundRectButtonWithFrame:CGRectMake(x, y, 64, 96) title:@"" target:self action:@selector(offLamp:)];
button1.backgroundColor=[UIColor orangeColor];
[downView addSubview:button1];
UIButton *button=[UIButton roundRectButtonWithFrame:CGRectMake(x, y, 64, 96) title:@"" target:self action:@selector(offLamp:)];
button.backgroundColor=[UIColor redColor];
[downView2 addSubview:button];
button.tag =i*100+j;
// 显示button上的tag值
// NSString* str = [NSString stringWithFormat:@"%d",button1.tag];
// [button1 setTitle:str forState:UIControlStateNormal];
// NSLog(@"%d",button.tag);
// 添加图片,并改变背景的状态
// [button setBackgroundImage:[UIImage imageNamed:@"imgage.png"] forState:UIControlStateSelected];
x+=64;
}
x=0;
y+=96;
}
[self initWith];
}
//初始化
-(void)initWith
{
for (int i=0; i<1+self.RandomClick; i++) {
UIButton * button1=(UIButton*)[self.view viewWithTag:(arc4random()%5+1)*100+arc4random()%5+1];
[self offLamp:button1];
}
}
//过关并进入下一关
-(void)win
{
self.state = 0;
UIView *view = [self.view viewWithTag:20000];
for (UIButton *but in [view subviews]) {
if (but.backgroundColor == [UIColor redColor]) {
self.state++;
}
if (self.state==25) {
UIAlertView *aView = [[UIAlertView alloc]initWithTitle:@"恭喜你" message:@"你过关了" delegate:self cancelButtonTitle:@"下一关" otherButtonTitles:nil];
[aView show];
self.RandomClick++;
[self initWith];
}
}
}
//点击事件/这里如果用seleated还可以优化
-(void)offLamp:(UIButton *)button
{
if (button.backgroundColor==[UIColor redColor]) {
button.backgroundColor=[UIColor clearColor];
}else{
button.backgroundColor=[UIColor redColor];
}
UIView *button1=[self.view viewWithTag:button.tag+100];
if (button1.backgroundColor==[UIColor redColor]) {
button1.backgroundColor=[UIColor clearColor];
}else{
button1.backgroundColor=[UIColor redColor];
}
UIView *button2=[self.view viewWithTag:button.tag-100];
if (button2.backgroundColor==[UIColor redColor]) {
button2.backgroundColor=[UIColor clearColor];
}else{
button2.backgroundColor=[UIColor redColor];
}
UIView *button3=[self.view viewWithTag:button.tag+1];
if (button3.backgroundColor==[UIColor redColor]) {
button3.backgroundColor=[UIColor clearColor];
}else{
button3.backgroundColor=[UIColor redColor];
}
UIView *button4=[self.view viewWithTag:button.tag-1];
if (button4.backgroundColor==[UIColor redColor]) {
button4.backgroundColor=[UIColor clearColor];
}else{
button4.backgroundColor=[UIColor redColor];
}
[self win];
}