zyphs21/HSStockChart

pin捏合缩放手势 放大缩小的时候方向会停不下来

Closed this issue · 5 comments

用这个属性recognizer.velocity可以解决

// 缩放后的candle宽度 let newCandleWidth = theme.candleWidth * (recognizer.velocity > 0 ? (1 + kLineScaleFactor) : (1 - kLineScaleFactor))

框架写的不错,关于滑动的时候重绘,视觉上会有一格一卡的感觉。有思路解决么

@sum123

滑动的时候重绘,视觉上会有一格一卡的感觉。

这个我暂时还没找到解决办法,视觉上的确是有点卡,但是 FPS 却变化不大。

@sum123 你好,捏合缩放手势 放大缩小的时候方向会停不下来 这个问题对应在这个PR: #20. 至于你提到的第二个问题 滑动的时候重绘,视觉上会有一格一卡的感觉 我把它单独出来一个 issue 了。所以这个 issue 我就先 close 掉了。

我改了一下这里的代码 减少了刷新次数

`override open func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == #keyPath(UIScrollView.contentOffset) && enableKVO {
// print("in klineview scrollView?.contentOffset.x " + "(scrollView.contentOffset.x)")

        // 当滚动间隙大于1个K线柱的时候 才刷新视图
        if abs(preRenderOffsetX - scrollView.contentOffset.x) < (theme.candleWidth+theme.candleGap), scrollView.contentSize.width > scrollView.width {
            return
        }
        // 拖动 ScrollView 时重绘当前显示的 klineview
        kLine.contentOffsetX = scrollView.contentOffset.x
        kLine.renderWidth = scrollView.frame.width
        kLine.drawKLineView(mainDrawString: mainDrawString, secondDrawString: secondDrawString, lineType: lineType)
       
        ...
        preRenderOffsetX = scrollView.contentOffset.x
    }
}`

@sum123 如果方便的话,你可以给我发个 PR。关于滑动重绘视觉上卡顿的问题,我们可以移步到这个 issue 下讨论 #21