在我的 iPad 应用程序中,Universal Combat Log (新布局分支),我有一个包含 UIScrollView 的 UIView 子类 (UCLLineChartView),而 ScrollView 又包含另一个 UIView 子类 (ChartView)。 ChartView 有多个子层,每个子层对应已添加到图表中的每一行数据。 UCLLineChartView 绘制坐标轴和标记。这些 View /图层的内容完全是自定义绘制的,没有使用库存 View (例如 UIImageView)。
我在缩放时遇到问题 -- 它像图像一样缩放 ChartView,这使得绘制的线条变得模糊和拉伸(stretch)。我希望线条保持清晰,最好是在用户进行缩放时也是如此,但经过 3 天的黑客攻击后,我无法让它工作。
如果我重写 ChartView 上的 setTransform 以从转换中获取比例因子但不调用 [super setTransform]
,则 ScrollView 的 zoomScale 保持在 1。我尝试保持给定的转换和覆盖转换方法以返回它。我尝试通过更改 ChartView 的中心和边界来复制 setTransform 的效果,但我无法获得非常正确的行为,而且它似乎仍然没有影响 ScrollView 的 zoomScale。 scrollview 的 zoomScale 似乎取决于 setTransform 的效果,但我无法确定如何。
如有任何帮助,我们将不胜感激。
最佳答案
您需要做的是更新 chartView 的 contentScaleFactor
。您可以通过在 scrollViewDidEndZooming:withView:atScale:
或 scrollViewDidZoom:
中添加以下代码来实现。
CGFloat newScale = scrollView.zoomScale * [[UIScreen mainScreen] scale];
[self.chartView setContentScaleFactor:newScale];
关于ios - 覆盖UIScrollView缩放的 "bitmap scaling"效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13379802/