Ios7 在GLKView类型的对象上找不到属性“layer”
在类型为“ViewController*的对象上找不到属性“layer”,其中ViewController的类型为GLKView,并且我正在我的opengl项目中导入以下文件 QuartzCore/QuartzCore.h OpenGLES/ES2/gl.h OpenGLES/ES2/glext.h ViewController.h的代码Ios7 在GLKView类型的对象上找不到属性“layer”,ios7,opengl-es,xcode5.1,glkview,Ios7,Opengl Es,Xcode5.1,Glkview,在类型为“ViewController*的对象上找不到属性“layer”,其中ViewController的类型为GLKView,并且我正在我的opengl项目中导入以下文件 QuartzCore/QuartzCore.h OpenGLES/ES2/gl.h OpenGLES/ES2/glext.h ViewController.h的代码 @interface ViewController : GLKViewController { CAEAGLLayer* eaglLayer;
@interface ViewController : GLKViewController
{
CAEAGLLayer* eaglLayer;
}
@结束
ViewController.m
@interface ViewController ()
@property (nonatomic, strong) EAGLContext *context;
@property (nonatomic, strong) GLKBaseEffect *baseEffect;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2];
GLKView *view = (GLKView *) self.view;
view.context = self.context;
[EAGLContext setCurrentContext:self.context];
}
+ (Class)layerClass
{
return [CAEAGLLayer class];
}
- (void)createLayer
{
eaglLayer = (CAEAGLLayer *) self.layer;
eaglLayer.opaque = YES;
}
请告诉我我做错了什么
您需要参考视图,而不是控制器
_eaglLayer = (CAEAGLLayer*) self.view.layer;
应该有用 我认为您将视图与视图控制器混为一谈。您如何知道ViewController是GLKView?因为我已经将其设置为GLKView。请参见编辑我正在附加与itI相关的图像我必须查看更多代码才能确定,但我认为您目前正在为GLKViewController的@implementation内部工作,该控件不是视图。如果这是真的,那么您应该能够通过在EditThank中执行self.view.layeraded文件代码来访问该层!我很困惑,因为这里有+layerClass方法,但您提到了ViewController。这就是访问图层的方式:GLKViewController->GLKView->CALayer。在代码中,self实际上是一个GLKViewController。因此,再次访问代码中的层应该是:self.view.layer