2010-09-09 107 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