我有一个包含35个相同按钮(黑色背景和灰色边框)的项目,它们位于另一个旁边(第一行中有5个,底部还有五个,填满了我的整个iphone屏幕)。
我的方法是:
button1.layer.borderWidth = 1.0f;
button1.layer.borderColor = [[UIColor grayColor] CGColor];
button2.layer.borderWidth = 1.0f;
button2.layer.borderColor = [[UIColor grayColor] CGColor];
button3.layer.borderWidth = 1.0f;
button3.layer.borderColor = [[UIColor grayColor] CGColor];
....
button35.layer.borderWidth = 1.0f;
button35.layer.borderColor = [[UIColor grayColor] CGColor];
想象一下,重复了多少行代码,对我而言并不意味着好事,在这种情况下我想知道如何最小化它?可以将所有按钮组合在一起吗?
答案 0 :(得分:2)
创建一个..
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttonCollection;
并将所有按钮连接到此。
然后在您的用户界面中定义您的属性(截图是我的按钮,所以按您的意愿设置属性)
或者在viewDidLoad
中使用this..put将你的buttonCollection循环for(UIButton *button in buttonCollection){
//capture frame
button.layer.borderWidth = 1.0f;
button.layer.borderColor = [[UIColor grayColor] CGColor];
}
答案 1 :(得分:1)
这可能不是最好的方法,但想法是UIButton继承自UIView。
因此,您可以通过使用按钮查找视图的子视图来获取按钮数组。
在数组上使用快速枚举来检查类是否为UIButton并进行更改。
NSArray * arr = _myView.subviews;
for (UIView * button in arr) {
NSLog(@" button %@", button);
if ([button isKindOfClass:[UIButton class]]) {
// UIButton* thisButton =button;
button.layer.borderWidth = 1.0f;
button.layer.borderColor = [[UIColor grayColor] CGColor];
}
}
我的快速测试在这里工作。
但正如我所说,我不能说这样做是不是一个好主意。如果有陷阱,希望评论会教育我。
答案 2 :(得分:0)
是这样的:
NSArray *keyPadImage=[[NSArray alloc]initWithObjects:@"keypad1-3.1.png",@"keypad2-3.1.png",@"keypad3-3.1.png",@"keypad4-3.1.png",@"keypad5-3.1.png",@"keypad6-3.1.png",@"keypad7-3.1.png",@"keypad8-3.1.png",@"keypad9-3.1.png",@"keypad-dot-3.1.png",@"keypad0-3.1.png",@"keypad-x-3.1.png",nil];
int height;
int count = [keyPadImage count];
for(int i=0;i<count;i++)
{
height=i/3;
UIButton *keyPad=[[UIButton alloc]initWithFrame:CGRectMake(15+(i%3)*92, 72+(height*75), 89, 72)];
[keyPad setBackgroundImage:[UIImage imageNamed:[keyPadImage objectAtIndex:i]] forState:UIControlStateNormal];
[keyPad addTarget:self action:@selector(modifyTotalAmount:) forControlEvents:UIControlEventTouchUpInside];
[keyPad setTag:(i+1)];
[self.view addSubview:keyPad];
}
由于