UIViewController旋转视图,但不会调整它的大小
问题描述:
我最近添加了一个UIViewController到我的iOS游戏中,而且我遇到了一些困难。我将视图添加到视图控制器,当我旋转手机时,视图旋转以保持直立。我的问题是,当视图处于横向模式时,视图保持纵向模式,底部不在屏幕上,屏幕右侧没有任何东西。UIViewController旋转视图,但不会调整它的大小
这是我的UIViewController代码:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
CGRect screenBounds = [[UIScreen mainScreen] bounds];
_glView = [[[OpenGLView alloc] initWithFrame:screenBounds] autorelease];
[self.view addSubview:_glView];
}
return self;
}
我该如何解决这个问题?
答
我不确定你的OpenGLView类是什么,但如果这是一些UIView的派生,你可以尝试设置你的_glView
的autoresizingMask
到(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)
。
是的,它来自UIView。你的代码确实有效。但是我的视图的内容在宽度方面质量差(这是OpenGL),它告诉我我的游戏被绘制为纵向,然后拉伸。这是否是OpenGL被画成肖像?我将如何使它景观? – Bananable
它在我看来像'glViewport'没有自动调整大小,也许你需要在'didRotateFromInterfaceOrientation'手动执行。如果你这样做,记得更新你的投影矩阵。也许你的'OpenGLView'类有一些方便的方法,比如'resize'或'reshape',除非它是你自己的实现。 –
是的!谢谢,我只是在改变投影矩阵的值,我完全忘记了glViewport。你先生,是一个拯救生命的人。 – Bananable