Способ создания UIButtons - PullRequest
       5

Способ создания UIButtons

0 голосов
/ 21 февраля 2012

это мой первый пост, любая помощь будет принята с благодарностью.

Мне нужно программно создать несколько кнопок UIB, что я и сделал, но код становится довольно грязным, когда есть много кнопок, так чтоЯ написал метод, который будет принимать UIbutton, string и 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 голосов
/ 21 февраля 2012
-(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;
}

Вы можете изменить значения кадра, чтобы расположить кнопки в соответствующих позициях на виде.

0 голосов
/ 21 февраля 2012

Это код, с которого можно начать. Это будет работать, если вы вставите его в свой контроллер представления, как правило, поместите его в желаемое представление, но измените «self.view» на «self» или любое другое представление, которое вы хотите, если у вас есть ссылка на него. Просто вызовите «addSomeButtons» для «viewDidLoad» или как некоторую цель ..

- (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];
    }
}

В любом случае, то, что вы пытаетесь сделать, очень распространено и очень возможно. Например, я никогда не использую конструктор интерфейсов.

0 голосов
/ 21 февраля 2012

UIB-кнопки создаются, но накладываются друг на друга ... вам просто нужно менять кадр при каждом вызове метода. 400 400 создадут кнопку выключения экрана. Я не думаю, что это то, что вы хотите ... попробуйтечто-то вроде 160,240

0 голосов
/ 21 февраля 2012

Возможно, вы захотите создать кнопки в Интерфейсном Разработчике, которые, на мой взгляд, гораздо удобнее для настройки размера, цвета и т. Д.

Затем вы можете ссылаться на кнопки в коде либо с помощью IBOutlet на кнопку, либо с помощью IBOutletCollection, что позволит вам «сгруппировать» число UIView с в одном выходе:

  • Просто создайте свои UIButton в Интерфейсном Разработчике и поместите их рядом на ваш основной вид, чтобы они не отображались изначально.
  • CMD + Click все кнопки и CTRL + Drag для вашего .h файла и создайте IBOutletCollection, который в конечном итоге будет выглядеть в вашем коде:

    @property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *allMyButtonsFromIB;
    
  • Теперь вы можете получить доступ к кнопкам в реализации через self.allMyButtons, то есть NSArray

0 голосов
/ 21 февраля 2012

установить другое значение тега для отделения кнопки от другой кнопки, например: button.tag = 1;

здесь вы должны использовать переменную вроде в .ч

int i ;

дюйм. М

 button.tag = i;

и установите размер кадра одной кнопки для другой кнопки

UIButton *name = [UIButton buttonWithType:UIButtonTypeRoundRectangle];
name.frame = CGRectMake(10*i,10*i,150,100);

i++;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...