ios - 启用分页和缩放的 UIScrollView 图像/照片查看器

标签 ios iphone uiscrollview

好的,我认为是时候在互联网上为这个问题建立一个正式的位置:How to make a UIScrollView photoviewer with paging and zooming。欢迎我的 UIScrollView 黑客。

我有一个启用了分页的 UIScrollView,并且我正在显示 UIImageViews,就像内置的照片应用程序一样。 (这听起来很熟悉吗?)

我在github上找到了以下项目:

https://github.com/andreyvit/ScrollingMadness/wiki

它显示了如何在启用分页的情况下在 ScrollView 中实现缩放。如果其他人尝试这样做,我实际上必须删除 UIScrollView 子类并使用 native 类,否则它不起作用。我认为这是因为 3.0 SDK 中有关 ScrollView 如何拦截触摸事件的更改。

所以想法是在开始缩放时删除所有其他 View ,并将当前 View 移动到 scrollview 中的 (0, 0),更新 contentsize 等。然后,当您缩放回 1.0f 时,它会将其他 View 加回去,并按顺序排列。

无论如何,该项目在模拟器中完美运行,但在设备上,您正在调整大小的 View 有一些令人讨厌的移动,这看起来是由于我们正在更改 contentsize/offset 等用于调整大小的 View 。您必须移动此 View ,否则您可以向左平移其他 View 留下的空白区域。

我在 3.0 SDK release notes 的“已知问题”中发现了一个有趣的注释:

UIScrollView: After zooming, content inset is ignored and content is left in the wrong position.

这听起来像是这里正在发生的事情。放大后, View 将移出屏幕,因为您更改了偏移量等。

我已经在这上面花了几个小时,但我逐渐意识到这是行不通的。

Three20 的照片查看器是不可能的:它太重了,而且有太多不必要的 UI 和其他行为。

内置的照片应用似乎有一些魔力。如果您放大图像并平移到远处边缘,则当前照片独立于其旁边的照片移动,这不是您在使用标准 UIScrollView 尝试此操作时得到的结果。

我看到过关于嵌套 UIScrollView 的讨论,但我真的不想去那里。

有没有人用标准的 UIScrollView 来管理这个(并且在 2.2 和 3.0 SDK 中工作)?我不喜欢滚动自己的缩放 + 弹跳 + 平移 + 分页代码。

最佳答案

更新

因为下面的新闻,我删除了我之前的回答......

对于那些还没有听说过的人来说是个大新闻。 Apple 已向 iphone 开发者计划的所有成员发布了 2010 WWDC session 视频。讨论的主题之一是他们如何创建照片应用程序!!!他们逐步构建了一个非常相似的应用程序,并免费提供所有代码。

它也不使用私有(private) api。这是示例代码下载的链接。您可能需要登录才能获得访问权限。

Check This

还有,这里是 iTunes WWDC 页面的链接:

Check This

关于ios - 启用分页和缩放的 UIScrollView 图像/照片查看器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/975708/

相关文章:

iphone - 改变 tableview 的插入时 UITableView 中的节标题

ios - 如何从 objective-c 中的动态字符串中提取子字符串?

iphone - MPMoviez PlayerViewController 在 5.1 下无法横向播放

objective-c - 如何为导航项目设置动画(闪烁或闪烁之类)

iPhone开发-TableView属性

iOS UI - 类似于 iPhoto 底栏 UI

objective-c - UIScrollView 分页标记

ios - 当 UIWebView 反弹时重新加载页面

ios - 如何在swift项目中集成PayUMoney iOS SDK

ios - 在Swift中的通用类中切换通用类型