任何地方在我的應用程序中都有UIButton,我希望它具有特定的背景圖像。這個背景圖片將永遠是一樣的。你可以在iPhone應用程序中使用UIButton應用程序嗎?
我不想要做的就是調用每個按鈕的方法,我把它放入我的用戶界面。
我可以通過類別或類似的方式做到這一點嗎?
任何地方在我的應用程序中都有UIButton,我希望它具有特定的背景圖像。這個背景圖片將永遠是一樣的。你可以在iPhone應用程序中使用UIButton應用程序嗎?
我不想要做的就是調用每個按鈕的方法,我把它放入我的用戶界面。
我可以通過類別或類似的方式做到這一點嗎?
您無法通過簡單代碼(在當前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];
你必須改變UIButton
到MyButton
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)];
這是我想避免的情況。我更低調的類別路線全球覆蓋的UIButtons方法之一。如果按照您的建議,我會在我的實現文件中爲每個添加到UI的按鈕留下很多UI定位邏輯。在我看來,這是不可接受的。爲什麼我不能像大多數其他基於MVC的UI技術那樣對一個按鈕進行蒙皮/模板化?嗯... – jaywayco
當然,你可以創建UIButton類。您必須在您的文件頂部插入'#import' **或**將其插入您的前綴(.pch)文件中。 – akashivskyy
我要在我的類別中重寫哪個方法來給按鈕一個背景圖片? – jaywayco
你有沒有考慮子類化並從那裏做到這一點?界面構建器讓你選擇類。另外,我看到了一些像Objective-C擴展機制。 「ClassName + Extension」,而ClassName是一個現有的類。不知道這是否適合你。 –
你稱之爲「擴展」是所謂的類別。 – Moshe
在WWDC 2011關於iOS 5 SDK幻燈片的主題演講中,出現了「自定義UI」一詞。這將回答你的問題。 –