cocoa 之王 - 我需要帮助!
我正在编写我的第一个应用程序(游戏),并尝试在 Core Frameworks 和 UIKit 中完成所有工作。我的游戏涉及一个由我手动创建的 UIButtons 制成的 5 x 8 板(!)。当我改变一个人的行为时要更新的大量 PItA。我尝试过使用可变数组和 UIButton 生成器,但我对这些东西仍然很糟糕,而且我在让事情正常工作方面非常不成功。
该按钮存储它的状态、值(value)、所有者和来源。我目前有 A、B、C、D、E 重新表示列,1-8 表示行。按钮为 62x62,网格两侧有 1 个像素的边距,按钮之间有 2 个像素的缓冲区和边距。
有人可以帮我从一个我为每个按钮指定标签、值等的类中获得一个不错的小数组生成器,并以编程方式吐出网格吗?
按钮示例:
-(IBAction) buttonA1:(id)sender {
UIButton *theButton = (UIButton *)sender;
theButton.titleLabel.font = [UIFont fontWithName:@"Gotham Rounded" size:22];
NSString *Title = theButton.titleLabel.text;
if (tapA1 != 1) {
[theButton setAlpha:1.0];
tapSum++;
tapA1 = 1;
[theButton setTitle: @"A1" forState: UIControlStateNormal];
NSLog(@"Press recieved from %@:\n\nSum is %i.\n", Title, tapSum);
[theButton setBackgroundImage:[UIImage imageNamed:@"red-dot.png"] forState:UIControlStateNormal];
}
else if (tapA1 == 1)
{
[theButton setAlpha:0.3];
tapA1 = 0;
tapSum--;
NSLog(@"Press recieved from %@:\n\nSum is %i.\n", Title, tapSum);
}
提前致谢!
最佳答案
好吧,您可以像这样创建一个网格:-
#define WIDTH 62
#define HEIGHT 62
#define PADDING 3
#define NUMBEROFBUTTONSINAROW 8
#define X 100
#define Y 100
#define TOTALBUTTONS 40
NSMutableArray *array = [[NSMutableArray alloc] init];
for(int i=0 ; i<TOTALBUTTONS;i++)
{
UIButton *btnClick = [UIButton buttonWithType:UIButtonTypeCustom];
[btnClick setImage:[UIImage imageNamed:@"ship.jpg"] forState:UIControlStateNormal];
[btnClick setFrame:CGRectMake(X+((WIDTH + PADDING) * (i%NUMBEROFBUTTONSINAROW)), Y + (HEIGHT + PADDING)*(i/NUMBEROFBUTTONSINAROW), WIDTH, HEIGHT)];
[btnClick addTarget:self action:@selector(btnTapped:) forControlEvents:UIControlEventTouchUpInside];
btnClick.tag=i + 1;
[self.view addSubview:btnClick];
[array addObject:btnClick];
}
最后是按钮操作:-
-(void)btnTapped:(id)sender
{
NSLog(@"Button Clicked %d",((UIButton *)sender).tag);
}
您可以通过标签值访问按钮。该数组不是必需的。
好吧,如果你喜欢,可以通过数组访问它。
或者,您可以创建一个将所有按钮自定义与其关联的类,并将类对象存储在 Array 中,以便稍后访问它。在这种情况下,按钮实现将在类中。
关于ios - Objective-C UIButton 网格生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15457820/