界面滚动视图.关于实现“无限"的任何想法滚动/缩放? [英] UIScrollView. Any thoughts on implementing "infinite" scroll/zoom?

查看:16
本文介绍了界面滚动视图.关于实现“无限"的任何想法滚动/缩放?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,UITableView 本质上支持无限"滚动.可能有一个限制,但那个傻瓜可以滚动 looonnnggg 时间.我想用 UIScrollView 模仿这种行为,但有两个基本障碍:

So, UITableView supports essentially "infinite" scrolling. There' may be a limit but that sucker can scroll for a looonnnggg time. I would like to mimic this behavior with a UIScrollView but there are two fundamental impediments:

1) scrollView.contentSize 在创建时是固定的.2) 缩放可以将任何延迟加载方案都吹得一团糟,因为它会导致无限数据爆炸.

1) scrollView.contentSize is fixed at creation time. 2) zooming can blow any lazy-loading scheme all to hell since it can cause infinte data explosion.

有其他人考虑过这个想法吗?是的,我知道,我们基本上是在谈论重新创建谷歌地图.任何见解将不胜感激.

Have others out there pondered this idea? Yah, I know, we are essentially talking about re-creating Google Maps here. Any insights would be much appreciated.

干杯,道格

推荐答案

虽然不可能拥有真正无限的 UIScrollView,但您可以使用一些简单的技巧来模拟这种行为.

While it's impossible to have a truly infinite UIScrollView, there are some simple tricks you can use to emulate that behavior.

  1. 处理固定的 contentSize:让滚动视图处理一些固定大小的视图,并在启动或实例化时设置内容偏移量,以便您看到已处理视图的中间.然后只需观察内容偏移量(使用 KVO 或其他一些方法),如果您靠近任何边缘,请使用一组新内容(适当的偏移量)更新视图的内容并重置滚动视图的 contentOffset 属性回到中间.
  2. 处理缩放:做一些类似的事情,只是这次观察滚动视图上的缩放系数.每当它到达某个点时,对您呈现的任何数据进行一些操作,使其显示为缩放,然后将缩放系数重置为 1.0.例如,如果你正在滚动一个图像并且它被放大到两倍大,以编程方式应用某种变换使图像变大两倍,然后将滚动视图的缩放因子重置为 1.0.图像仍会放大显示,但滚动视图将能够根据需要继续放大.(Google 地图更进一步,在用户缩放时延迟加载更详细的视图 - 您可能会也可能不会选择实现这一点.)
  1. Handling the fixed contentSize: have some fixed-size view handled by your scroll view, and at launch or instantiation, set the content offset so that you're seeing the middle of the handled view. Then just watch the content offset (using KVO or some other method), and if you near any edge, update the content of the view with a new set of content (offset appropriately) and reset the scroll view's contentOffset property to be back in the middle.
  2. Handling zooming: do something similar, only this time watch the zoom factor on the scroll view. Whenever it gets to a certain point, do some manipulation to whatever data you're presenting so that it appears zoomed, then reset the zoom factor to 1.0. For example, if you're scrolling an image and it gets zoomed to appear twice as large, programmatically apply some kind of transform to make the image twice as large, then reset the scroll view's zoom factor to 1.0. The image will still appear zoomed in, but the scroll view will be able to continue zooming in further as necessary. (Google Maps takes this one step further where it lazy-loads more detailed views as the user zooms - you may or may not choose to implement this.)

这篇关于界面滚动视图.关于实现“无限"的任何想法滚动/缩放?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆