ios - 覆盖UIScrollView缩放的 "bitmap scaling"效果

标签 ios cocoa-touch uiscrollview uikit

在我的 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/

相关文章:

ios - 如何将插图添加到 UILabel (iOS Swift)?

ios - 当 CAKeyframeAnimation 完成动画时有没有办法调用方法?

objective-c - ASIHTTPRequest setTemporaryFileDownloadPath:不适用于某些URL

objective-c - 我可以用超过 1 个分隔符来分隔 NSString 吗?

iphone - UIScrollView 一次只向一个方向滚动

ios - 如何在 OpenGL es 2.0 中模拟累积缓冲区(尾随粒子效应)

ios - 如何使图钉和 map 在 MKMapView 中的移动叠加层上方居中

iphone - 如何将我未发布的 iPhone 应用程序提供给不在我附近的人进行测试?

ios - UIScrollView 在添加约束时消失

ios - 使用 UIImage 放大 ScrollView