我正在使用一个简单的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;
}
答案 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,而是你在初始化函数。
如果你想得到帮助,请给我们更多信息: - )
祝你好运!