我试图建立一个基于模板"OpenGL游戏“的Xcode项目。这个例子有一个StoryBoard,它有一个GLKViewController和一个GLKView。
我想要:
中的不同东西
问题是:当使用GLKViews文件时,我似乎无法将两个StoryBoard放到屏幕上--当使用NIB文件时,无法使GLKViews工作
我想知道这两种方法中是否有任何一种是可行的,什么是最好的办法。
即使在NIB文件中只设置一个GLKView和GLKViewController时,似乎都没有调用方法update:,也没有调用GLKViewController的glkView:drawInRect:。
如何才能将两个GLKViews放在同一个屏幕上的iPad应用程序中呢?
编辑:对不起,不太准确。
基本上我想做的是:
F 217
我将Xcode 4.2用于iOS 5.1,用于iPad
第一种方法是使用StoryBoard:
第二种方法,删除StoryBoard并创建一个NIB文件:
不管怎么说,我都不会有事的,现在没有办法了。
谢谢你的暗示,托尔斯顿。
解决方案:我现在使用一个NIB文件,并添加了一个预先配置好的GLKViewController / GLKView组合。仅仅放置一个UIView和一个UIViewController,然后更改它们的类型是行不通的。
发布于 2012-05-27 18:47:09
最近我遇到了同样的问题,但是只有2 GLKViews而不是3。
最后,我以编程的方式完成了这一切,因为故事板方法似乎不够健壮。
我所做的就是创建一个“主”GLKViewController,它可以容纳我所有的其他GLKViews/GLKViewController。
然后,我添加子子类GLKViewControllers及其后续视图。
我发现的棘手部分是,我需要将ViewControllers作为子视图添加,并将它们作为子视图添加到“主”视图中。
GLKViewController master = [[GLKViewController alloc] initWithNibName:nil bundle:nil];
GLKView *masterView = (GLKView *)master.view;
masterView.context = context;
master.view = masterView;
/* I created a constructor with a parameter to identify dimensions and position for rendering */
GLKViewController *child1 = [[SubclassGLKViewController alloc] initWithNibName:nil bundle:nil];
GLKView *child1View = (GLKView *)child1.view;
child1View.context = context;
child1.view = child1View;
GLKViewController *child2 = [[SubclassGLKViewController alloc] initWithNibName:nil bundle:nil];
GLKView *child2View = (GLKView *)child2.view;
child2View.context = context;
child2.view = child2View;
/*It seems all three of these steps are needed*/
[master addChildViewController:child1];
[child1 didMoveToParentViewController:master];
[master.view addSubview:child1View];我必须做的另一件事是在我的viewDidAppear子类中实现GLKViewController。
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if(some condition is met)
change frame size to something
else
change frame size to something else
self.view.frame = frame;
}希望这能有所帮助。
https://stackoverflow.com/questions/9984389
复制相似问题