如何通过拖动视图边缘/角来实现缩放,如应用官方照片应用裁剪控制?
Posted
技术标签:
【中文标题】如何通过拖动视图边缘/角来实现缩放,如应用官方照片应用裁剪控制?【英文标题】:How to implement scaling by dragging view edges/corners like Apply Official Photos app crop control? 【发布时间】:2016-03-01 04:30:47 【问题描述】:苹果官方照片应用程序有一个编辑功能,您可以裁剪照片。我想为裁剪照片实现类似的控件。我想知道如何实现裁剪蒙版的大小调整。
裁剪蒙版的大小调整有以下要求。
-
裁剪蒙版只能通过拖动边缘或角来调整大小。
缩放的锚点与起始边或角相对。
裁剪蒙版可以锁定纵横比。
裁剪蒙版不应属于受限范围。
我已经完成了前 3 个要求,但是第 4 个要求让我很困扰。考虑裁剪蒙版在受限边界框左下角的最小尺寸的情况。拖动顶部边缘将使视图缩放,锚点位于左下角。有了这种奇怪的行为,我认为我用相反的锚点改变边界的实现不能有这种行为。所以我认为苹果的实现与我的不同。我想知道如何实现这些行为。
【问题讨论】:
【参考方案1】:问题是你采取了什么程序。
我建议使用简单的UIScrollView
来完成。您的“裁剪蒙版”可以是滚动视图,可以通过拖动它的角来调整大小和重新定位。滚动视图必须禁用“剪辑子视图”,以便您可以在滚动视图之外看到内容视图(内容视图是实际图像)。
因此,此过程已经为您在滚动图像时省去了所有边界问题。移动滚动视图仍然需要一些工作......根据您拖动的角落,您可能需要修改内容偏移量,因为您似乎已经想到并且应该没有任何问题。然后剩下的是当图像超出范围时将图像放入裁剪蒙版中,这应该通过调用滚动矩形来对整个内容视图框架可见;如果不是,它也可以很容易地手动计算。
您还必须重写命中测试方法,以便滚动发生在滚动视图之外。
【讨论】:
以上是关于如何通过拖动视图边缘/角来实现缩放,如应用官方照片应用裁剪控制?的主要内容,如果未能解决你的问题,请参考以下文章