【问题标题】:UIScrollView Snapping with OpenGL GLKitUIScrollView 与 OpenGL GLKit 对齐
【发布时间】:2012-06-25 10:32:49
【问题描述】:

这有点有趣。

所以我有一个顶部有滚动视图的 OpenGL 屏幕。我在滚动时使用 CADisplay 链接更新渲染(下面的代码),效果非常好。

但是,我无法让它捕捉到一点(动画)。我相信 CADisplay 链接的释放会停止滚动视图的动画(参见 snapToItem)。

我尝试在 2 秒后释放 CADisplay,但这会导致其他问题。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    moveFactor = 0 - (((self.scrollView.contentSize.height - self.scrollView.frame.size.height) - self.scrollView.contentOffset.y) / itemScrollViewMoveFactor);
    [self updateLabelPositionScale];
}

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

- (void)snapToItem
{
    NSLog(@"%d", self.selectItem);
    [self.scrollView setContentOffset:CGPointMake(0, (self.scrollView.contentSize.height - self.scrollView.frame.size.height) - (itemScrollViewHeight * self.selectItem)) animated:YES];
    //[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(stopDisplayLink)  userInfo:nil repeats:NO];
    [self stopDisplayLink];
}

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

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

#pragma mark Display Link

- (void)startDisplayLinkIfNeeded
{
    if (!self.displayLink) 
    {
        self.displayLink = [CADisplayLink displayLinkWithTarget:self.view selector:@selector(display)];
        [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:UITrackingRunLoopMode];
    }
}

- (void)stopDisplayLink
{
    if (self.displayLink)
    {
        [self.displayLink invalidate];
        self.displayLink = nil;
    }
}

【问题讨论】:

    标签: ios opengl-es uiscrollview glkit


    【解决方案1】:

    您是否尝试将显示链接添加到 NSRunLoopCommonModes?

    【讨论】:

      猜你喜欢
      • 2012-08-25
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 2014-06-19
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多