UIScrollView自定义分页距离

时间:2010-05-17 15:05:32

标签: objective-c iphone-sdk-3.0 uiscrollview

我在UIScrollView(覆盖整个屏幕宽度)中有一个UIImage(图像的宽度大于320像素),并且需要分页效果。

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

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

1 个答案:

答案 0 :(得分:1)

我想不出一个更清晰的解决方案,而不是动态做数学。如果所需的页面长度是100px而不是“滑动”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。