在设备旋转之前,UIView背景颜色未设置

时间:2010-09-09 16:35:22

标签: iphone objective-c ipad

我正在使用一个简单的iPad应用程序,我遇到了一个简单的问题。我正在设置一个自定义的UIView;这是我的initWithFrame:

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

    return self;
}

问题是当应用程序启动时,在此视图中,即使init的其余部分正在运行(添加了控件等),也不会应用背景颜色。当我旋转设备时,会应用背景颜色,并将在应用程序的生命周期内保持应用。我想我在某个地方缺少布局命令,但我不知道在哪里。有什么想法吗?

编辑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;
}

3 个答案:

答案 0 :(得分:3)

接口生成器调用-initWithFrame:,而不是在运行时从nib文件取消归档视图的NSCoder实例。相反,unarchiving机制调用-initWithCoder:,所以你的视图子类需要做这样的事情:

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

        // Do other initialization here...
    }

    return self;
}

答案 1 :(得分:0)

尝试更改viewDidLoad方法中的背景?

答案 2 :(得分:0)

如果您没有调用方法(分配您的UIView),我们将无法为您提供帮助。

可能是因为您的uiview框架设置不正确。 或者因为你没有在alloc之后调用initWithFrame,而是你在初始化函数。

如果你想得到帮助,请给我们更多信息: - )

祝你好运!