2010-09-09 106 views
0

我正在與一個簡單的iPad應用程序,我有一個簡單的問題。我設置了一個自定義UIView;這裏是我的initWithFrame:方法UIView背景顏色沒有設置,直到設備旋轉

- (id)initWithFrame:(CGRect)frame 
{ 
    if ((self = [super initWithFrame:frame])) 
    { 
     self.backgroundColor = [UIColor colorWithWhite:.4 alpha:1.0]; 
     .... 
    } 

    return self; 
} 

的問題是,應用程序啓動時,在該視圖中不應用背景顏色,即使在init的其餘部分正在運行(控件添加等)。當我旋轉設備時,會應用背景顏色,並且會在應用程序的整個生命週期中繼續應用。我想我錯過了佈局命令的地方,但我不知道在哪裏。有任何想法嗎?

EDIT 2

這裏給init查看通話。這些方法在我的ViewController中。

-(id)initWithFrame:(CGRect)_rect 
{ 
    rect = _rect; 
    if(self = [super init]) 
    { 
     ...... 
    } 
    return self; 
} 

- (void)loadView 
{ 
    [super loadView]; 

    myView = [[MyView alloc] 
        initWithFrame:rect]; 

    self.view = myView; 
} 
+0

你試過[自我setNeedsDisplay]; ? – 2010-09-09 16:38:39

+0

我在initWithFrame方法的底部嘗試了它,它沒有做任何事情。還有別的地方嗎? – 2010-09-10 23:28:17

+0

如果您在此處添加了一些上下文,它可能會有所幫助。在你的代碼中對'initWithFrame:'的調用發生在哪裏? – jlehr 2010-09-11 16:54:40

回答

0

嘗試更改viewDidLoad方法中的背景嗎?

0

如果你沒有調用方法(至極ALLOC你的UIView),我們將無法幫助你。

這可能是因爲您的uiview框架設置不正確。 或者因爲你沒有在alloc之後調用initWithFrame,但是你調用了初始化函數。

所以給我們更多的信息,如果你想得到幫助:-)

祝你好運!

3

-initWithFrame:由Interface Builder調用,但不是由NSCoder實例在運行時將您的視圖從nib文件解除歸檔。相反,解檔機制調用-initWithCoder:,讓您的視圖子類需要做這樣的事情:

- (id)initWithCoder:(NSCoder *)decoder 
{ 
    if ((self = [super initWithCoder:decoder])) 
    { 
     self.backgroundColor = [UIColor purpleColor]; 

     // Do other initialization here... 
    } 

    return self; 
} 
+0

我沒有使用nib文件,我正在編程編寫它。 – 2010-09-10 23:24:51