我在UIScrollView(覆盖整个屏幕宽度)中有一个UIImage(图像的宽度大于320像素),并且需要分页效果。
我找到的所有教程/示例都解释了如何使用多个UIImages或UIVIews,但我在UIScrollView中只有1个UIImage。我的目标是创造一种类似效果的“卷尺”。并且scrollview应该在磁带的每个标记上“页面”?
如何在距离小于UIScrollView宽度的情况下进行分页?!
答案 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。