如何对不同页面大小的 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 进行分页?的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 与 UINavigationBar 的动态大小