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的派生,你可以尝试设置你的_glViewautoresizingMask(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)

+0

是的,它来自UIView。你的代码确实有效。但是我的视图的内容在宽度方面质量差(这是OpenGL),它告诉我我的游戏被绘制为纵向,然后拉伸。这是否是OpenGL被画成肖像?我将如何使它景观? – Bananable

+0

它在我看来像'glViewport'没有自动调整大小,也许你需要在'didRotateFromInterfaceOrientation'手动执行。如果你这样做,记得更新你的投影矩阵。也许你的'OpenGLView'类有一些方便的方法,比如'resize'或'reshape',除非它是你自己的实现。 –

+0

是的!谢谢,我只是在改变投影矩阵的值,我完全忘记了glViewport。你先生,是一个拯救生命的人。 – Bananable