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

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

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

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

【问题讨论】:

    标签: objective-c iphone-sdk-3.0 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 的目的是什么?干杯!
    • 嗯...我不记得了。我可能忘了拉出那条线,因为很明显,它不再做任何事情了。 :)
    猜你喜欢
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 2011-10-12
    • 2012-03-11
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 2013-01-08
    相关资源
    最近更新 更多