这是我的第一篇文章,非常感谢任何帮助。
我必须以编程方式创建一些UIButtons,我已经完成了,但是当有很多按钮时代码变得非常混乱所以我编写了一个方法,它将UI按钮,字符串和UIcolor作为输入并设置其余的UIButton属性对我而言。问题是似乎没有创建按钮。是我正在尝试的可能还是我以错误的方式去做。
方法
-(void)makeButton:(UIButton *)name titleOfButton:(NSString *)title buttonColor:(UIColor *)color {
name =[[UIButton alloc] initWithFrame:(CGRectMake(400,400,150,100))];
[name setAlpha:(0.5)];
[name setBackgroundColor: color];
[name setTitle:title forState:UIControlStateNormal];
name.titleLabel.font = [UIFont systemFontOfSize:16];
name.titleLabel. numberOfLines = 0; // Dynamic number of lines
name.titleLabel.lineBreakMode = UILineBreakModeWordWrap;
name.titleLabel.textColor = [UIColor blackColor];
[myView addSubview:name];
}
并调用方法
[self makeButton:JDLabel
titleOfButton:@"JD"
buttonColor:[UIColor redColor]];
该方法已在头文件和类顶部的按钮中声明。
答案 0 :(得分:0)
设置不同的标记值,将按钮与另一个按钮分开,如: button.tag = 1;
这里你应该使用变量之类的 在.h
int i ;
in .m
button.tag = i;
并将一个按钮的帧大小设置为另一个按钮
UIButton *name = [UIButton buttonWithType:UIButtonTypeRoundRectangle];
name.frame = CGRectMake(10*i,10*i,150,100);
i++;
答案 1 :(得分:0)
UIButtons正在创建,但相互重叠..你只需要用每个方法调用来改变框架... 400,400将在屏幕外创建按钮..我不认为那是你想要的..尝试类似160,240
的东西答案 2 :(得分:0)
您可能需要考虑在Interface Builder中创建按钮,我发现设置尺寸,颜色等更方便。
然后,您可以通过每个按钮IBOutlet
或IBOutletCollection
来引用代码中的按钮,这样您就可以在一个插座中“分组”多个UIView
s :
UIButton
,然后将下一步放置到主视图中,这样它们最初就不会显示。 CMD + Click
所有按钮和CTRL + Drag
到.h
文件并创建IBOutletCollection
,最终在您的代码中显示如下:
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *allMyButtonsFromIB;
现在,您可以通过self.allMyButtons
访问实施中的按钮,NSArray
答案 3 :(得分:0)
这是一些可以帮助您入门的代码。如果将其粘贴到视图控制器中,这将会起作用,通常将其放在您想要的视图中,但只要您引用它,就可以将“self.view”更改为“self”或任何视图。只需在“viewDidLoad”上调用“addSomeButtons”或作为某个目标..
- (void)buttonPressed:(UIButton *)sender {
NSLog(@"button %d pressed", sender.tag+1);
}
- (void)makeButtonWithtitle:(NSString *)title andColor:(UIColor *)color atPositionIndex:(NSInteger)index {
const CGFloat buttonHeight = 60.0f;
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(.0f, buttonHeight*index, 300.0f, buttonHeight)];
button.tag = index;
[button setAlpha:(0.5)];
[button setBackgroundColor: color];
[button setTitle:title forState:UIControlStateNormal];
button.titleLabel.font = [UIFont systemFontOfSize:16];
button.titleLabel. numberOfLines = 0; // Dynamic number of lines
button.titleLabel.lineBreakMode = UILineBreakModeWordWrap;
button.titleLabel.textColor = [UIColor blackColor];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
[button release];
}
- (void)addSomeButtons {
for(int i=0; i<10; i++) {
[self makeButtonWithtitle:[NSString stringWithFormat:@"button %d", i+1] andColor:[UIColor greenColor] atPositionIndex:i];
}
}
无论如何,你要做的事情是非常普遍的,也是非常可能的。例如,我从未使用过界面构建器。
答案 4 :(得分:0)
-(void)createButtonWithTitle:(NSString*)title andColor:(UIColor*)color andFrame:(CGRect)frame{
UIButton *lButton = [UIButton buttonWithType:UIButtonTypeCustom];
[lButton setFrame:frame];
[lButton setTitle:title forState:UIControlStateNormal];
lButton.titleLabel.font = [UIFont systemFontOfSize:16];
[lButton setBackgroundColor:color];
[self.view addSubview:lButton];
lButton = nil;
}
您可以更改帧值,将按钮放在视图上的适当位置。