gpt4 book ai didi

iphone - iOS : UIScrollView and OpenGL

转载 作者:可可西里 更新时间:2023-11-01 05:42:11 26 4
gpt4 key购买 nike

所以我有一个 OpenGL(glView) View ,它正在呈现一个我打算滚动的菜单。我试图避免重新发明 UIScrollView,所以我在 glView 之上放置了一个 ScrollView 。

问题是滚动 scrollview 会暂停渲染

此处讨论了类似的问题 Animation in OpenGL ES view freezes when UIScrollView is dragged on iPhone

问题是我不知道 [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];指的是

我制作了一个新的 CADisplayLink 并尝试执行上述操作但没有成功

我尝试在 scrollViewDidScroll 中调用 render 方法

我试过调用 [self.view setNeedsDisplay];

我还找到了调用 timerLoop 的引用?

谁能帮帮我

最佳答案

所以,我找到了一个解决方案:)

创建一个 CADisplayLink *_displayLink;属性(你需要导入 QuartzCore)

将 ScrollView 置于顶部。

    #pragma mark - scrollView Delegate

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//code for moving the object here
}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[self startDisplayLinkIfNeeded];
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (!decelerate) {
[self stopDisplayLink];
}
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
[self stopDisplayLink];
}

#pragma mark Display Link

- (void)startDisplayLinkIfNeeded
{
if (!_displayLink) {
// do not change the method it calls as its part of the GLKView
_displayLink = [CADisplayLink displayLinkWithTarget:self.view selector:@selector(display)];
[_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:UITrackingRunLoopMode];
}
}

- (void)stopDisplayLink
{
[_displayLink invalidate];
_displayLink = nil;
}

关于iphone - iOS : UIScrollView and OpenGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11017649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com