0

我想实现一个 ipad 视图,我在其中解析一个 xml 文件并将条目并排放在“无尽”的 ipad 视图上,所以你必须左右滑动它。有人可以告诉我如何实现这个吗?我必须使用哪种类型的视图?

提前致谢

问候

4

2 回答 2

2

使用一个非常大contentSize的不是要走的路。contentSize仍然使用固定的数据类型,如果你滚动足够长的时间,它们会溢出,充其量,你的绘图会变得混乱。最坏的情况是,您的应用程序崩溃。

您想要的是通过使用窗口给人一种无限滚动的印象。我将通过一个简单的一维示例来说明它是如何工作的,但是您可以轻松地将其扩展到二维。

假设您有 3 个条目,每个条目都填充UIScrollView. 向右滚动,它似乎是这样排列的:

A B C A B C A B C ...

在内部,您将像这样安排它们:

C A B C

因为当 A 可见时,向右滑动可以看到 C 的一部分,向左滑动可以看到 B 的一部分。

UIScrollViewcontentOffset就是你的窗口。虽然contentSize包含所有四个实体的宽度 ( C A B C),但在内部您将其限制为实际宽度的 75%。当您的用户左右滚动时,您会进行调整contentOffset,使其永远不会为负数或不超过contentSize.width. 这是在您的代表内部完成的,在scrollViewDidScroll:

- (void) scrollViewDidScroll:(UIScrollView *)scrollView
{
    while (scrollView.contentOffset.x < 0)
        scrollView.contentOffset.x += constrainedContentSize.width;
    while (scrollView.contentOffset.x > constrainedContentSize.width)
        scrollView.contentOffset.x -= constrainedContentSize.width;

    // ...
}

请注意,这假定一个实例变量constrainedContentSize,可能在您所在视图的控制器中UIScrollView,并且控制器是您的UIScrollView委托。

这将比不断发布和重新创建视图更有效。

于 2010-04-23T02:13:20.667 回答
1

您使用启用了分页的 UIScrollView。要点是将 myscrollView.contentSize 设置为所有页面的总宽度,但在滚动发生时及时创建各个页面(请参阅 UIScrollViewDelegate 文档);换句话说,当您只需要三个视图时,您不希望实际上有几十个或更多视图耗尽内存——当前视图以及前一个和下一个视图。这个来自苹果的示例代码应该让你开始:http: //developer.apple.com/iphone/library/samplecode/Scrolling/Introduction/Intro.html

于 2010-04-21T12:26:53.803 回答