2013-10-31 38 views
1

在我的應用程序中,我有一個漸變作爲背景。此漸變是以編程方式進行的。我現在用的這種方式是這樣的:iOS更改UIViewController

我有一個UIViewController這需要顯示的梯度和該類我這樣做:

- (void) viewWillAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 
    [Gradient gradientInViewController:self]; 
} 

這並沒有那麼糟糕,但是這需要在所有不是很好的編程類中都要完成。我想要的不是創建一個班級UIViewController,我希望它是一個GradientViewController這是UIViewController的一個子類,在這個班級中,我將處理所有事情。

所以我的問題是如何做到這一點?我認爲這必須通過類別來完成?但我無法弄清楚如何在屏幕上顯示圖像。這應該在viewWillAppear或什麼?

+0

只需更改[super viewDidAppear:animated]; to [super viewDidAppear:animated]; – NANNAV

+0

@NANNAV不知道他們之間有什麼不同,你是不是要說'[super viewWillAppea:animated];' – Popeye

回答

2

做一個GradientViewController它處理梯度繪製

@interface GradientViewController : UIViewController 

@end 

@implementation GradientViewController 

- (void) viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    [Gradient gradientInViewController:self]; 
} 

@end 

然後繼承從

@interface YourViewController : GradientViewController 

@end 

@implementation YourViewController 

- (void) viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    // no need to do anything 
} 

@end 

所有其他控制器它更靈活,不必通過輔助類或類別不過,即使有一點重複。

注意由Nguyen Duc指出,你打電話[super viewDidAppear:]viewWillAppear:這是錯誤的,我編輯了答案。

+0

我會給你最好的答案,因爲它給出了一個完整的解釋!謝謝 – Haagenti

0

只需創建一個新的視圖控制器(讓我們稱之爲GradientViewController爲例),把繪製漸變成其觀點viewWillAppear相同的代碼,然後通過更換

@interface SomeViewController : UIViewController 
讓你的所有視圖控制器視圖控制器的子類

@interface SomeViewController : GradientViewController 
+0

謝謝!剛纔意識到我完全推翻了這個! – Haagenti

1

爲什麼不使用Interface Builder,並有一個xib知道如何自動爲您加載圖像?

0

你可以簡單的通過繼承UIViewController中得到這種行爲「免費」在你的應用程序: -

@interface GradientViewController : UIViewController 
@end 

和實施viewDidLoad:您的梯度代碼,例如: -

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [Gradient gradientInViewController:self]; 
} 

那麼就使用GradientViewController而不是UIViewController,無論你需要什麼梯度。

或者,您可以使用一個類別。這可能很有用,因爲您可以爲您的應用使用「主題」類別,配置您的UIViewController的各種UI元素。但我會在UIViewController上設置一個類別,專門設置您的漸變,然後在需要它的每個視圖控制器中調用類別方法 - 執行而不是試圖通過重寫viewDidLoad:viewWillAppear:來完成此操作。

相關問題