2011-09-09 78 views
1

對於iOS編程和Objective-C,我一般都很陌生,所以這個問題可能已經被問過很多次了。總之:在iOS中對UIButton進行編碼時避免重複代碼

在我的iOS應用程序,我有我創建如下方式幾個UIButtons:

UIButton *webButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[webButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
webButton.frame = CGRectMake(10, 315, 300, 44); 
[webButton setBackgroundImage:[UIImage imageNamed:@"WebButton.png"] forState:UIControlStateNormal]; 
[webButton setBackgroundImage:[UIImage imageNamed:@"WebButtonPressed.png"] forState:UIControlStateHighlighted]; 

因爲我希望按鈕的標題是容易編輯,我再加入UILabels的按鈕,而不是讓它們成爲用作按鈕背景圖像的圖像的一部分。

UILabel *webLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 14, 300, 15)]; 
webLabel.text = @"Some website"; 
webLabel.font = [UIFont boldSystemFontOfSize:16.0]; 
webLabel.textColor = [UIColor colorWithRed:62.0/255 green:135.0/255 blue:203.0/255 alpha:1]; 
webLabel.textAlignment = UITextAlignmentCenter; 
webLabel.backgroundColor = [UIColor clearColor]; 
[webButton addSubview:webLabel]; 
[webLabel release]; 

當你每次想要創建一個新按鈕時都必須經過這個過程,這會變得非常單調乏味。什麼是簡化這個過程的最好方法,所以在編碼按鈕時我不必一遍又一遍地重複自己。

謝謝。

+0

約一個簡單的子程序?沒有真正需要花哨的子類或任何東西,只需將大部分邏輯放在常見的例程中。 –

+0

如果您重複使用相同的顏色,您可以製作一份並共享它。 –

回答

2

我懷疑你想要做的是創建一個UIButton的子類。這樣你就可以編寫一次你的代碼,但將它用於任意數量的按鈕。東西有點像這樣:

// in your .h file 

#import <UIKit/UIKit.h> 
@interface WebButton : UIButton 
+ (WebButton*) webButtonWithBackgroundImageNamed: (NSString*) imageName title: (NSString*) string andTarget: (id) target; 
@end 

// in your .m file 
#import "WebButton.h" 
@implementation WebButton 

+ (WebButton*) webButtonWithBackgroundImageNamed: (NSString*) imageName title: (NSString*) string andTarget: (id) target; 
{ 
    WebButton *webButton = [WebButton buttonWithType:UIButtonTypeCustom]; 
    [webButton addTarget:target action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    webButton.frame = CGRectMake(0, 0, 300, 44); 
    [webButton setBackgroundImage:[UIImage imageNamed: imageName] forState:UIControlStateNormal]; 
    [webButton setBackgroundImage:[UIImage imageNamed: [NSString stringWithFormat:@"%@pressed", imageName]] forState:UIControlStateHighlighted]; 

    UILabel *webLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 14, 300, 15)]; 
    webLabel.text = string; 
    webLabel.font = [UIFont boldSystemFontOfSize:16.0]; 
    webLabel.textColor = [UIColor colorWithRed:62.0/255 green:135.0/255 blue:203.0/255 alpha:1]; 
    webLabel.textAlignment = UITextAlignmentCenter; 
    webLabel.backgroundColor = [UIColor clearColor]; 
    [webButton addSubview:webLabel]; 
    [webLabel release]; 

    return webButton; 
} 

然後創建和添加按鈕的視圖的東西有點像這樣:

WebButton* webButton = [WebButton webButtonWithBackgroundImageNamed:@"WebButton" title:@"testing" andTarget:self]; 
CGRect webButtonFrame = [webButton frame]; 
webButtonFrame.origin.x = 10; 
webButtonFrame.origin.y = 30; 
[webButton setFrame:webButtonFrame]; 
[[self window] addSubview:webButton]; 
如何
+0

工程就像一個魅力。謝謝! – wstr