UIScrollView 自定义分页距离

Posted

技术标签:

【中文标题】UIScrollView 自定义分页距离【英文标题】:UIScrollView custom paging distance 【发布时间】:2010-05-17 15:05:31 【问题描述】:

我在 UIScrollView 中有一个 UIImage(图像的宽度 > 320px)(覆盖整个屏幕宽度)并想要一个分页效果。

我找到的所有教程/示例都解释了如何使用多个 UIImages 或 UIVIews 进行操作,但我在 UIScrollView 中只有 1 个 UIImage。我的目标是创造一种类似“卷尺”的效果。并且滚动视图应该在磁带的每个标记上“翻页”?

如何在小于 UIScrollView 宽度的距离上进行分页?!

【问题讨论】:

【参考方案1】:

我想不出比动态计算更简洁的解决方案。如果所需的页面长度为 100 像素,则“滑动” UIImage 以使其相对于实际页面保持不变。所以类似于:

CGFloat pageWidth = 100;
int numPages = ceilf(myImageView.bounds.size.width / pageWidth);
scrollView.contentSize = CGSizeMake(numPages * scrollView.bounds.size.width,
                                  scrollView.bounds.size.height);

然后继承滚动视图的layoutSubviews方法:

- (void)layoutSubviews 
    int numPages = ceilf(myImageView.bounds.size.width / pageWidth);
    CGRect visibleBounds = [self bounds];
    CGFloat start = visibleBounds.origin.x;
    CGFloat offset = start / pageWidth;
    myImageView.frame = CGRectMake(offset, myImageView.frame.origin.y,
                                   myImageView.frame.size.width,
                                   myImageView.frame.size.height);
   

我根本没有测试过这个,但希望它能让你走上正轨。这个应该做的是在你滚动时移动图像,这样看起来每个“页面”只移动图像 100px。

【讨论】:

感谢 MrHen! ...只是一个后续问题...在您的 layoutSubvies 方法中,numPages 的目的是什么?干杯! 嗯...我不记得了。我可能忘了拉出那条线,因为很明显,它不再做任何事情了。 :)

以上是关于UIScrollView 自定义分页距离的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局在自定义 UITableViewCell 上分页 UIScrollView

消息传递(或不传递)到 UIScrollView

iOS 开发之使用 ScrollView 实现自定义滚动距离(半屏分页滑动)

如何使用 UIScrollViewDelegate 方法重新实现 UIScrollView 分页

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

用两个手指使用 UIScrollView 的自定义容器