好的,我认为是时候在互联网上为这个问题建立一个官方位置了:How to make a UIScrollView
photoviewer with paging and zooming。UIScrollView
欢迎我的黑客伙伴。
我UIScrollView
启用了分页功能,并且UIImageViews
像内置照片应用程序一样显示。(这听起来是不是很熟悉?)
我在github上找到了以下项目:
https://github.com/andreyvit/ScrollingMadness/wiki
它显示了如何在启用分页时在滚动视图中实现缩放。如果其他人尝试这样做,我实际上必须删除UIScrollView
子类并使用本机类,否则它不起作用。我认为这是因为 3.0 SDK 中有关滚动视图如何拦截触摸事件的更改。
所以这个想法是在您开始缩放时删除所有其他视图,并将当前视图移动到 (0, 0) 中scrollview
,更新contentsize
等。然后当您缩放回 1.0f 时,它会重新添加其他视图并放置一切恢复正常。
无论如何,该项目在模拟器中运行良好,但在设备上,您正在调整大小的视图有一些令人讨厌的移动,这看起来是由于我们正在更改contentsize
/offset
等以调整视图大小。您必须移动此视图,否则您可以通过其他视图留下的空白向左平移。
我在3.0 SDK 发行说明的“已知问题”中发现了一个有趣的说明:
UIScrollView:缩放后,内容插入被忽略,内容留在错误的位置。
这种听起来就像这里正在发生的事情。放大后,视图将移出屏幕,因为您更改了偏移量等。
我已经在这上面花了几个小时,但我正在慢慢意识到这行不通。
Three20 的照片查看器是不可能的:它太重了,而且有太多不必要的 UI 和其他行为。
内置的照片应用程序似乎有一些魔力。如果您放大图像并平移到远边缘,则当前照片会独立于旁边的照片移动,这不是您在使用标准UIScrollView
.
我看过关于嵌套UIScrollView
's 的讨论,但我真的不想去那里。
有没有人用标准管理过这个UIScrollView
(并且在 2.2 和 3.0 SDK 中工作)?我不喜欢滚动我自己的缩放 + 弹跳 + 平移 + 分页代码。