在 GLKView 类型的对象上找不到属性“层”
Posted
技术标签:
【中文标题】在 GLKView 类型的对象上找不到属性“层”【英文标题】:Property 'layer' not found on object of type GLKView 【发布时间】:2014-10-16 06:12:21 【问题描述】:在“ViewController *”类型的对象上找不到属性“层”,其中 ViewController 的类型为 GLKView,而且我正在我的 opengl 项目中导入以下文件
QuartzCore/QuartzCore.h
OpenGLES/ES2/gl.h
OpenGLES/ES2/gext.h
ViewController.h 的代码
@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;
请告诉我我做错了什么?
【问题讨论】:
我认为您将视图与视图控制器混为一谈。你怎么知道 ViewController 是 GLKView? 因为我已经将它设置为 GLKView。请参阅编辑我正在附加与之相关的图像 我必须查看更多代码才能确定,但我认为您目前正在@implementation 内部为一个不是视图的 GLKViewController 工作。如果这是真的,那么您应该能够通过执行 self.view.layer 来访问该层 在编辑中添加文件代码 谢谢!我很困惑,因为您在那里有 +layerClass 方法,但您提到了“ViewController”。这是您访问图层的方式:GLKViewController->GLKView->CALayer。在您的代码中,“self”实际上是一个 GLKViewController。所以再次访问代码中的图层将是:self.view.layer 【参考方案1】:您需要引用视图,而不是控制器。
_eaglLayer = (CAEAGLLayer*) self.view.layer;
应该可以。
【讨论】:
以上是关于在 GLKView 类型的对象上找不到属性“层”的主要内容,如果未能解决你的问题,请参考以下文章
在“CBPeripheral *”类型的对象上找不到属性“uuid”
在“ViewController”类型的对象上找不到属性引用?