【问题标题】:Zoom into UIView without pixelating放大 UIView 而不像素化
【发布时间】:2017-08-04 14:04:54
【问题描述】:

我有一个使用 UIBezierpaths(矢量)的绘图应用程序,我正在尝试创建一个函数,允许我像其他绘图应用程序一样缩放画布/UIView。我不想放大单个贝塞尔路径,我已经知道该怎么做。我想要一个缩放功能像 safari,它可以缩放画布/视图。

如果我使用以下代码:

self.transform = CGAffineTransform(scaleX: 2, y: 2)

这个:

变成这个,你会注意到它非常模糊/不平滑,就像向量应该是这样的:

但我希望它看起来像这样,这在另一个绘图应用程序上会发生

我知道这个问题可能有一个复杂的答案,但我自己很难找到答案。

【问题讨论】:

  • 如果你想实现矢量缩放,你应该自己重新计算点。 CGAffineTransform 不是基于向量的。
  • CGaffinetransform 确实可以正确放大 uibezierpaths,但我想转换视图

标签: ios swift uiview drawing uibezierpath


【解决方案1】:

我制作了一个可以放大的绘图应用程序。我不记得我是如何处理这个问题的。 但我认为你绝对应该使用 UIScrollView 来管理缩放/拖动部分。
UIImageView pinch zoom swift

您将能够几乎免费地进行缩放、拖动等操作。 而且我认为它不会被像素化

【讨论】:

  • 谢谢。假设这不是解决方案,我之前一直在玩这个但没有成功,但现在你已经告诉我这可能是解决方案,我会继续尝试
【解决方案2】:

UIPinchGestureRecognizerUIPanGestureRecognizer 添加到您的绘图视图。然后处理来自他们的委托事件以更新您的比例和偏移量。然后,您最终使用生成的比例和偏移量来重绘(通常通过调用 setNeedsDisplay())。

我可以根据经验告诉你,这些计算有点棘手但可行。

【讨论】:

    猜你喜欢
    • 2014-02-17
    • 1970-01-01
    • 2013-11-02
    • 2014-06-08
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    相关资源
    最近更新 更多