2012-07-02 99 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
​​
+0

NO @ganesh馬諾。我不想在按鈕上設置圖像。 在上面的鏈接。如果我使用'IBOutlet ColorfulButton * phBtn;'然後應用'[phoneButton setHighColor:[UIColor redColor]]; [phoneButton setLowColor:[UIColor orangeColor]];'它確實工作。但它不適用於動態按鈕。正如我在上面的評論中提到的那樣。 – MehrozKarim

+0

@ Mehrozkarim.I認爲第二行將爲你工作? –

+0

這行['phoneButton setBackgroundColor:(UIColor *)];'將在整個按鈕上設置背景顏色。雖然我使用的代碼在按鈕上設置了兩種顏色。 'setHighColor'設置上半部分的顏色。 'setLowColor'設置按鈕的下半部分顏色。 – MehrozKarim

0

這讓我陷入了很長時間,但只是想通了,所以認爲我會發布我的解決方案。 CIMGF的ColorfulButton類非常酷,但以編程方式創建一個並不容易。

我向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];