开关灯效果

作者: zhangyunjiang | 来源:发表于2016-03-08 21:24 被阅读812次

要求

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

.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

相关文章

  • 开关灯效果

    要求 .h文件 .m文件 图片显示效果

  • 17JavaScript实现网页开关灯效果

    网页开关灯效果实现 预览效果

  • 弟弟语录2则

    妈妈:我们关灯睡觉了。 弟弟:不要关灯,要开灯。 妈妈:关灯了。 弟弟:开灯啦。 姐姐:关掉! 弟弟:开掉! 姐姐...

  • js _页面开关灯效果

  • “手机关机”可不是“Close the phone”!

    1、开机/关机 Open/Close your phone? 解析:对于电子设备的开关比如开/关灯,开/关电脑,不...

  • 儿子成长日志3

    半夜醒来,发现儿子自己开灯去上厕所,冲厕所,关灯,开客厅的灯,倒水,关客厅的灯,关房门,关灯睡觉,连经常提醒的冲厕...

  • 关灯

    关灯。 关灯。 关灯!!! 哎我去!咋还没灭? 你问我怎么自己不关?我也不知道,反正我几年前,只要一喊,自动的开关...

  • 关灯

    只消轻轻一按光便陷入黑夜中,凋零横斜门前的木兰花枝走出冬天等待,下一按

  • 《关灯》

    临睡前一定关灯 哪怕畏惧黑暗 闭上眼会有光明

  • 关灯

    钥匙转动的声音响了之后,漆黑的屋子里渗进一些光。一道影子与这些光撞到一起,门外传来急切的咳声。灯亮了。 一个人走了...

网友评论

    本文标题:开关灯效果

    本文链接:https://www.haomeiwen.com/subject/wzpzkttx.html