创建UIButtons的方法

时间:2012-02-21 10:58:53

标签: iphone ios cocoa-touch

这是我的第一篇文章,非常感谢任何帮助。

我必须以编程方式创建一些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]];

该方法已在头文件和类顶部的按钮中声明。

5 个答案:

答案 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中创建按钮,我发现设置尺寸,颜色等更方便。

然后,您可以通过每个按钮IBOutletIBOutletCollection来引用代码中的按钮,这样您就可以在一个插座中“分组”多个UIView s :

  • 只需在Interfacebuilder中创建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;
}

您可以更改帧值,将按钮放在视图上的适当位置。