开关灯效果

要求

 实现开灯时将上下左右的灯都打开,关灯时将上下左右的灯都关闭,当是在最前一排或在最后一排时,注意前面没有灯开

.h文件

#import "ViewController.h"
@interface ViewController ()
@property(strong,nonatomic)UIButton *button;
@property(copy,nonatomic)NSString *str;
@property(copy,nonatomic)NSString *str1;
@property(assign,nonatomic)CGRect rect;
@property(assign,nonatomic)BOOL a;
@end

.m文件

- (void)viewDidLoad {
[super viewDidLoad];
int indxe=5;
CGFloat appW=60;
CGFloat appH=60;
CGFloat appjxX=(self.view.frame.size.width-appW*indxe)/(indxe+1);
CGFloat appjxY=appjxX;
CGFloat apptopY=20;
九宫格循环建立按钮
for (int i=0; i<45; i++) {
    int X=i%indxe;
    int Y=i/indxe;
     self.button=[[UIButton alloc]initWithFrame:CGRectMake((appjxX+appW)*X+appjxX, (appH+appjxY)*Y+appjxY+apptopY, appW, appH)];
     self.str=[NSString stringWithFormat:@"1.jpg"];
     self.str1=[NSString stringWithFormat:@"2.jpg"];
     设置按钮低量、高量图片
    [self.button setBackgroundImage:[UIImage imageNamed:self.str] forState:(UIControlStateNormal)];
    [self.button setBackgroundImage:[UIImage imageNamed:self.str1] forState:UIControlStateHighlighted];
    设置每个按钮的唯一标识
    self.button.tag=i;
    [self.button addTarget:self action:@selector(change:) forControlEvents:(UIControlEventTouchDown)];
    [self.view addSubview:self.button];
   }
}
点击按钮需要实现的方法
-(void)change:(UIButton *)button
{
int i=(int)button.tag;
定义数组,将上下左右的按钮一一标识
int arr[4]={i+1,i-1,i-5,i+5};
判断是否是第一列
if (i%5==0) {
    arr[1]=i+1;
}
判断是否是最后一列
else if (i%5==4)
{
    arr[0]=i-1;
}
如果处于低量状态,那么自己和周围的全变红
if (self.a==YES) {
    [self red:button];
    for (int i=0; i<=4; i++) {
    self.button=[[UIButton alloc]init];
    self.button.frame=[self.view viewWithTag:arr[i]].frame;
    [self red:self.button];
    [self.view addSubview:self.button];
    }
}
关灯效果,在关灯时,将周围的灯全部关掉
else
{
    判断是否是第一列
    if (i%5==0) {
        [self yea:button];
        self.button=[self.view viewWithTag:i+1];
        [self yea:self.button];
        [self.view addSubview:self.button];
        
        self.button=[self.view viewWithTag:i+1];
        [self yea:self.button];
        [self.view addSubview:self.button];
        
        self.button=[self.view viewWithTag:i-5];
        [self yea:self.button];
        [self.view addSubview:self.button];
        
        self.button=[self.view viewWithTag:i+5];
        [self yea:self.button];
        [self.view addSubview:self.button];
    }
    判断是否是最后一列
    else if (i%5==4)
    {
        [self yea:button];
        self.button=[self.view viewWithTag:i-1];
        [self yea:self.button];
        [self.view addSubview:self.button];
        
        self.button=[self.view viewWithTag:i-1];
        [self yea:self.button];
        [self.view addSubview:self.button];
        
        self.button=[self.view viewWithTag:i-5];
        [self yea:self.button];
        [self.view addSubview:self.button];
        
        self.button=[self.view viewWithTag:i+5];
        [self yea:self.button];
        [self.view addSubview:self.button]; 
    }
    
    else
    {
    [self yea:button];
    self.button=[self.view viewWithTag:i+1];
    [self yea:self.button];
    [self.view addSubview:self.button];
    
    self.button=[self.view viewWithTag:i-1];
    [self yea:self.button];
    [self.view addSubview:self.button];

    self.button=[self.view viewWithTag:i-5];
    [self yea:self.button];
    [self.view addSubview:self.button];

    self.button=[self.view viewWithTag:i+5];
    [self yea:self.button];
    [self.view addSubview:self.button];
    }
    }
}
变为红色方法
-(void)red:(UIButton *)button
{
[button setBackgroundImage:[UIImage imageNamed:self.str1] forState:UIControlStateNormal];
self.a=NO;
}
变为黄色方法
-(void)yea:(UIButton *)button
{
[button setBackgroundImage:[UIImage imageNamed:self.str] forState:UIControlStateNormal];
self.a=YES;
}

图片显示效果

屏幕快照 2016-03-08 09.19.27 PM.png
屏幕快照 2016-03-08 09.19.42 PM.png
屏幕快照 2016-03-08 09.20.07 PM.png
屏幕快照 2016-03-08 09.20.44 PM.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容