尝试嵌入PPSSignatureView对象

3

我正在尝试实现这个类,以便在我的应用程序中捕捉签名

PPSSignatureView *sign = [[PPSSignatureView alloc] initWithFrame:CGRectMake(10, 10, 500, 300)];
GLKViewController *glkView = [[GLKViewController alloc] init];
glkView.view = sign;
[self.view addSubview:glkView.view];

我以前没有使用过任何OpenGL组件,所以我不确定我是否正确设置了它。

(PPSSignatureView是GLKView的子类)


它只是没有出现在我的视图中。我只能在Storyboard中创建一个GLKView并将其重新分类为PPSSignatureView时才能使其工作。我如何以编程方式实现这一点? - Halpo
1
最后只是使用了一个xib。 - Halpo
2个回答

5

尝试使用“initWithFrame:context”而不是“initWithFrame:”,请参见下面的代码:

EAGLContext *context = [EAGLContext alloc]initWithAPI:kEAGLRenderingAPIOpenGLES2];
PPSSignatureView *sign = [[PPSSignatureView alloc] initWithFrame:CGRectMake(10, 10, 500, 300) context:context];

这对我有用,希望能帮到你!


这对我有用,谢谢。不过我注意到在第二次调用之前需要清除 EAGLContext。因此,当我在上下文声明前放置 [EAGLContext setCurrentContext:nil] 时,我发现它可以多次运行。 - Gram
1
我注意到在PPSSignatureView的dealloc方法中,它本身调用了'[EAGLContext setCurrentContext:nil]'。我猜想你可能在内存中分配了多个实例?这可能会导致内存泄漏吗? - Yang
1
谢谢,我看了一下,如果传递上下文,它似乎会重新声明它...不确定为什么或者我是否理解正确。 - Gram
1
是的,你说得对,在commonInit方法中,它被重新分配了。实际上,如果将nil作为上下文变量传递,它可以正常工作!我也不理解... - Yang

0

把它作为子视图控制器添加进去怎么样?这是一个示例:

[self addChildViewController:gLKVController];
[self.view addSubview:gLKVController.view];
[gLKVController didMoveToParentViewController:self];

我也使用了同样的库,我的做法是将整个GLKViewController嵌入到一个容器视图中,然后调整容器视图的大小和位置以达到我想要的效果。对我来说更加简单,不需要编写代码。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接