在Cocos2d中,我读到过这样的内容:
但是没有按钮可见。如果这很重要,这种方法是CCLayerColor的一部分,它是应用程序中呈现的第一个场景。我在这里做错了什么?谢谢!
编辑:我可以确认按钮被添加到窗口子视图中,因为正在NSLogging。
有人能解释一下为什么使用这个类方法有效,而使用
编辑3(解决方案):
使用
[[[[CCDirector sharedDirector] openGLView] window] addSubview:someButton];
将会向主窗口添加一个UIView:http://www.cocos2d-iphone.org/forum/topic/3588
但是在我的代码中,我有这个:
- (void)onEnterTransitionDidFinish {
UIButton* button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
[[[[CCDirector sharedDirector] openGLView] window] addSubview:button];
}
但是没有按钮可见。如果这很重要,这种方法是CCLayerColor的一部分,它是应用程序中呈现的第一个场景。我在这里做错了什么?谢谢!
编辑:我可以确认按钮被添加到窗口子视图中,因为正在NSLogging。
[[[[[CCDirector sharedDirector] openGLView] window] subviews] count]
当我注释或取消注释addSubview行时,显示出不同。那么为什么按钮没有显示出来呢?
编辑2:
感谢@Marine,我发现我的问题是我声明按钮的方式;使用buttonWithType:
解决了这个问题,因为这段代码可以工作:
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(100, 100, 100, 100)];
[[[[CCDirector sharedDirector] openGLView] window] addSubview:button];
有人能解释一下为什么使用这个类方法有效,而使用
initWithFrame:
则无效吗?因为我不想创建很多自动释放的对象,而且当我使用buttonWithType:
方法时,有些UIButton子类不会显示出来。编辑3(解决方案):
使用
buttonWithType:
以外的任何方法都不起作用的原因是,如果您不使用该方法创建按钮,则按钮的背景颜色未设置,默认值为clearColor
。使用[button setBackgroundColor:[UIColor redColor]]
或任何其他颜色都可以解决此问题。此外,如果使用像这样的自定义按钮类,则可能需要手动调用[button awakeFromNib]
,如果按钮没有连接到nib文件。