效果图
首先,使用for循环将视图在模拟器上创建出来 for (NSInteger i = 0; i < 6; i++) { for (NSInteger j = 0; j < 10; j++) { //创建和灯泡视图等同数量的button, 来控制灯泡的开关 UIButton *lightButton = [UIButton buttonWithType:UIButtonTypeSystem]; lightButton.frame = CGRectMake(i * 64, 27 + (j * 64), 64, 64); // 将图片添加到button按钮上 [lightButton setBackgroundImage:[UIImage imageNamed:@"2"] forState:UIControlStateNormal]; // 为button按钮关联实现方法 [lightButton addTarget:self action:@selector(pressButton:) forControlEvents:UIControlEventTouchUpInside]; // 为button按钮设置tag值, 方便寻找 lightButton.tag = 200 + j + 100 * i; // 将button添加到窗口视图上 [self.window addSubview:lightButton]; } } 如果要实现灯泡的开关, 需要一个点击button的方法 - (void)pressButton:(UIButton *)button { // 随机选中一个button, 则点击它所能够影响到的button最多有五个, 分别是自己和上下左右 NSInteger array[5] = {button.tag, button.tag + 1, button.tag + 100, button.tag - 1, button.tag - 100}; if ([button.currentBackgroundImage isEqual:[UIImage imageNamed:@"2"]]) { for (NSInteger i = 0; i < 5; i++) { UIButton *aLightButton = (UIButton *)[self.window viewWithTag:array[i]]; if ([aLightButton.currentBackgroundImage isEqual:[UIImage imageNamed:@"1"]]) { [aLightButton setBackgroundImage:[UIImage imageNamed:@"2"] forState:UIControlStateNormal]; } else { [aLightButton setBackgroundImage:[UIImage imageNamed:@"1"] forState:UIControlStateNormal]; } } } else { for (NSInteger i = 0; i < 5; i++) { UIButton *aLightButton = (UIButton *)[self.window viewWithTag:array[i]]; if ([aLightButton.currentBackgroundImage isEqual:[UIImage imageNamed:@"2"]]) { [aLightButton setBackgroundImage:[UIImage imageNamed:@"1"] forState:UIControlStateNormal]; } else { [aLightButton setBackgroundImage:[UIImage imageNamed:@"2"] forState:UIControlStateNormal]; } } } }