0

我想在我的应用程序中进行水平分页。我有大文本,放在 UITextView 中,但我想做水平分页,比如 iBooks 或 bookmate。你有什么解决方案或想法吗?

4

4 回答 4

1

看看新的(iOS 5)类UIPageViewController。对于 iBooks 页面卷曲效果,请尝试使用

[controller initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl 
              navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal 
                            options:nil];

然后,您可以使用setViewControllers:direction:animated:completion:. 有关此类的更多参考,请访问UIPageViewController 类参考

于 2011-11-18T19:01:40.790 回答
1

使用这个名为PagedView的便捷类,它为您管理分页滚动视图以及视图加载/卸载和重用。

您必须实现两个委托方法才能使其正常工作:

- (NSUInteger)numberOfPagesInPagedView:(PagedView *)view;
- (UIView *)pagedView:(PagedView *)view viewForPageAtIndex:(NSUInteger)page;

如果您曾经使用过,它们会看起来很熟悉UITableViewnumberOfPagesInPagedView:您只需返回要显示的页数。

- (NSUInteger)numberOfPagesInPagedView:(PagedView *)view
{
    // return the number of pages in the paging view
    return 10;
}

pagedView:viewForPageAtIndex:您必须返回特定页面索引的视图。dequeueReusableViewWithIdentifier:您可以通过将消息发送到分页视图来重用视图。

- (UIView *)pagedView:(PagedView *)pagedView viewForPageAtIndex:(NSUInteger)page
{
    static NSString *reuseIdentifier = @"PageIdentifier";
    UIView *view = [pagedView dequeueReusableViewWithIdentifier:reuseIdentifier];
    if(view == nil) {
        view = [[[MyPageView alloc] initWithFrame:view.bounds] autorelease];
    }

    // add contents specific to this page index to the view

    return view;
}

为了使视图重用工作,您的UIView子类 ( MyPageView) 应符合ReusableObject协议并实现reuseIdentifier(在这种情况下您将返回@"PageIdentifier")。

我已经在许多项目中使用过这个类,并且效果很好。

于 2011-11-18T19:13:50.020 回答
0

您可以使用 UIWebView(UIScrollView 的子类)来满足您的水平分页需求。

要使其正常工作,您需要根据 Web 视图的大小(和高度)拆分用于存储文本的 NSString。

将拆分的 NSString 存储到 NSArray 中,然后根据用户滑动,加载正确的“页面”(数组索引)并显示动画。

希望有帮助。

于 2011-11-18T18:51:10.390 回答
0

打开 pageEnabled 的 UIScrollView?

于 2011-11-18T18:48:10.483 回答