2011-07-04 165 views
2

任何地方在我的應用程序中都有UIButton,我希望它具有特定的背景圖像。這個背景圖片將永遠是一樣的。你可以在iPhone應用程序中使用UIButton應用程序嗎?

我不想要做的就是調用每個按鈕的方法,我把它放入我的用戶界面。

我可以通過類別或類似的方式做到這一點嗎?

+0

你有沒有考慮子類化並從那裏做到這一點?界面構建器讓你選擇類。另外,我看到了一些像Objective-C擴展機制。 「ClassName + Extension」,而ClassName是一個現有的類。不知道這是否適合你。 –

+1

你稱之爲「擴展」是所謂的類別。 – Moshe

+1

在WWDC 2011關於iOS 5 SDK幻燈片的主題演講中,出現了「自定義UI」一詞。這將回答你的問題。 –

回答

3

您無法通過簡單代碼(在當前SDK中)更改按鈕的全局外觀。


,你可以繼承你的UIButton。例如:

.h 

@interface MyButton : UIButton 

@end 

--- 

.m 

@implementation MyButton 

// your customization code 

@end 

如果你要插入的UIButton實例,如:

UIButton *button = // init your button 
// customize your button 
[self.view addSubview:button]; 

你必須改變UIButtonMyButton

Mybutton *button= // init your button 
[self.view addSubview:button]; 

中不要忘了你的#import "MyButton.h".m/.hh文件。


編輯:您應該在哪裏進行自定義:

@implementation UIButton (MyCategory) 

+ (id)buttonWithFrame:(CGRect)frame { 
    return [[[self alloc] initWithFrame:frame] autorelease]; 
} 

- (id)initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) { 
    // HERE YOU CAN DO SOME CUSTOMIZATION 
    } 
    return self; 
} 

然後,在你的viewController地方:

UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(x, y, width, height)]; 

或:

UIButton *btn = [UIButton buttonWithFrame:CGRectMake(x, y, width, height)]; 
+0

這是我想避免的情況。我更低調的類別路線全球覆蓋的UIButtons方法之一。如果按照您的建議,我會在我的實現文件中爲每個添加到UI的按鈕留下很多UI定位邏輯。在我看來,這是不可接受的。爲什麼我不能像大多數其他基於MVC的UI技術那樣對一個按鈕進行蒙皮/模板化?嗯... – jaywayco

+0

當然,你可以創建UIButton類。您必須在您的文件頂部插入'#import' **或**將其插入您的前綴(.pch)文件中。 – akashivskyy

+0

我要在我的類別中重寫哪個方法來給按鈕一個背景圖片? – jaywayco

相關問題