2012-07-02 7 views
0

Я использовал ссылку ниже, чтобы применить цвет к кнопкам:Как генерировать ColorfulButtons динамически?

http://www.cimgf.com/2010/01/28/fun-with-uibuttons-and-core-animation-layers/

Как я должен использоваться выше для динамических кнопок? Мой код:

int y=297; 
for (int i=0; i < [phonesArray count]; i++) { 
    NSLog(@"%d phone number is :%@",i,[phonesArray objectAtIndex:i]); 

    UIButton *phoneButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [phoneButton setTitle:[phonesArray objectAtIndex:i] forState:UIControlStateNormal]; 
    [phoneButton addTarget:self action:@selector(dailPhoneNo:) forControlEvents:UIControlEventTouchUpInside]; 
    phoneButton.frame = CGRectMake(11, y, 278, 42); 
    [scrollView addSubview:phoneButton]; 


    y=y+60; 
} 

Я попробовать это тоже:

ColorfulButton *phoneButton = [[ColorfulButton alloc] init]; 
[phoneButton setTitle:[phonesArray objectAtIndex:i] forState:UIControlStateNormal]; 
[phoneButton addTarget:self action:@selector(dailPhoneNo:) forControlEvents:UIControlEventTouchUpInside]; 
phoneButton.frame = CGRectMake(11, y, 278, 42); 
[phoneButton setHighColor:[UIColor redColor]]; 
[phoneButton setLowColor:[UIColor orangeColor]]; 
[scrollView addSubview:phoneButton]; 

Но кнопки не отображаются на представлении.

ответ

0
[phoneButton setTitleColor:(UIColor *) forState:(UIControlState)]; 
    [phoneButton setBackgroundColor:(UIColor *)]; 
    [phoneButton setBackgroundImage:(UIImage *) forState:(UIControlState)]; 
+0

NO @ganesh Манодж. Я не хочу устанавливать изображение на кнопку. По ссылке выше. Если я использую 'IBOutlet ColorfulButton * phBtn;', а затем примените '[phoneButton setHighColor: [UIColor redColor]]; [phoneButton setLowColor: [UIColor orangeColor]]; 'он действительно работал. Но он не работает для динамических кнопок. как я упомянул в моем предыдущем комментарии. – MehrozKarim

+0

@ Mehrozkarim.I думаю, 2-я строка будет работать на вас? –

+0

Эта строка '[phoneButton setBackgroundColor: (UIColor *)];' будет устанавливать цвет фона на всей кнопке. В то время как код, который я использовал, устанавливает два цвета на кнопке. 'setHighColor' устанавливает верхнюю половину цвета. и 'setLowColor' устанавливает нижний половинный цвет кнопки. – MehrozKarim

0

Это тоже сильно заглохло, но я понял, что решил опубликовать решение. Класс ColorfulButton от CIMGF очень крут, но создание программно нелегко.

Я добавил дополнительный метод для класса ColorfulButton, чтобы упростить общий процесс.

в ColorfulButton.h

- (ColorfulButton *)initWithFrame:(CGRect)frame title:(NSString *)title tag:(NSInteger)tag; 

в ColorfulButton.m

- (void)configureColors 
{ 
    [self setHighColor:[UIColor whiteColor]]; 
    [self setLowColor:[UIColor grayColor]]; 
} 

- (ColorfulButton *)initWithFrame:(CGRect)frame title:(NSString *)title tag:(NSInteger)tag 
{ 
    self = [super init]; 
    self.frame = frame; 
    [self setTitleColor:[UIColor colorWithRed:.196 green:0.3098 blue:0.52 alpha:1.0] forState:UIControlStateNormal]; 
    [self setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted]; 
    [self.titleLabel setFont:[UIFont boldSystemFontOfSize:15.0f]]; 
    [self configureColors]; 
    [self awakeFromNib];  
    [self setTitle:title forState:UIControlStateNormal]; 
    self.tag = tag; 

    return self; 
} 

в моем вызове .m программу

ColorfulButton *button = [[ColorfulButton alloc] initWithFrame:CGRectMake(70.0, 50.0, 100.0, 37.0) title:@"Category" tag:888]; 
[button addTarget:self 
      action:@selector(setCategoriesPressed:) 
    forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:button]; 
Смежные вопросы