如何对不同页面大小的 UIScrollView 进行分页?

Posted

技术标签:

【中文标题】如何对不同页面大小的 UIScrollView 进行分页?【英文标题】:how to paginate UIScrollView with different page sizes? 【发布时间】:2010-08-24 14:39:25 【问题描述】:

我正在尝试对不同宽度的 UILabel 进行水平滚动

我已经将所有标签放在 UIScrollView 中,但由于页面滚动、弹跳和捕捉是在 scrollview.frame.width“步骤”中完成的,我无法设置它随心所欲地工作。

这可以吗?非常感谢:)

【问题讨论】:

【参考方案1】:

如果将 width 属性的大小设置为下一个标签的宽度会怎样?类似于(在您的滚动视图委托中):

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
    // Get the label that's going to slide into view
    UIView *label = [self getCurrentLabel];

    // Get it's width
    float width = [label frame].size.width;

    // Set our size
    CGRect frame = [scrollView frame];
    frame.size.width = width;
    [scrollView setFrame:frame];

PS 我没有试过这个,所以它可能会失败!

【讨论】:

这行不通的原因有很多。首先,您不知道哪个标签会滑入视图。滚动视图可以向左或向右滚动。其次,标签的位置可能不仅仅是宽度 * labelWhichWillSlideIn。 当然你知道下一个标签是什么——你只有一个标签数组和一个 currentLabel 索引。并且您可以使用 currentOffset 属性跟踪滚动的方式。并且您应该已经将标签放置在 viewWillAppear 中。这个问题只是说你的标签是不同的宽度,而不是你知道这些标签是什么!

以上是关于如何对不同页面大小的 UIScrollView 进行分页?的主要内容,如果未能解决你的问题,请参考以下文章

链接 2 UIScrollView 与不同的分页大小

UIScrollView 服装分页大小

UIScrollView 与 UINavigationBar 的动态大小

对 UIScrollView 的 RTL 支持

如何在 UIScrollView iOS/Swift 中的控件页面之间水平滚动

怎么设置uiscrollview的分页大小