平移和缩放的替代方案

Posted

技术标签:

【中文标题】平移和缩放的替代方案【英文标题】:Alternatives for panning and zooming 【发布时间】:2014-09-12 21:44:55 【问题描述】:

我有一个包含许多子视图的视图(代表数学对象——想想一个方程组,每个方程中的每个项都是一个单独的控件)。我希望能够放大和缩小视图,并在它周围平移。但我想使用UIScrollView,至少不是传统方式,因为视图中的控件使用了很多相同的手势——滑动、捏合等。

另一种方法是使用UIScrollView,但要“锁定”视图,使其不会缩放或平移,允许控件接收这些手势,然后使用按钮进行缩放和平移——有点像控件在 Mapquest(在线)上。但这感觉非常“离散”(不连续和平滑)和过时。

有没有更好的方法来解决这个问题?

【问题讨论】:

【参考方案1】:

您可以使用自定义浮动导航控件,而不是使用滚动条和按钮等标准 UI 元素来操作主视图。在视图的一个角落制作一个小矩形,无论主视图的缩放或平移值如何,该矩形始终保持在那里并保持其大小。用户可以在其中使用标准手势来缩放和平移主视图。 诀窍是让它直观,这样用户就可以清楚地知道这就是视图的使用方式。在矩形内显示整体视图的缩小快照是一种技术。

顺便说一句,当您说使用标准控件不连续和流畅时,我不确定您的意思。为什么不?您应该能够获得与手势相同的交互性。

【讨论】:

这是个好主意。正如您所说,可能很难使其直观。关于“不平滑”,我的意思是典型的 Mapquest 类型的控制在离散的跳跃中平移,而不是允许连续的平移。

以上是关于平移和缩放的替代方案的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SVG 进行缩放和平移

矩阵的平移旋转与缩放

UIScrollView 并取消缩放捏合手势

Fabricjs 平移和缩放

Flutter动画 --- 平移/旋转/缩放/渐变

平移和缩放图像