【问题标题】:UIScrollView - (bounces = NO) seems to override (pagingEnabled = YES)UIScrollView - (bounces = NO) 似乎覆盖了 (pagingEnabled = YES)
【发布时间】:2010-11-29 14:40:14
【问题描述】:

我有一个带有分页的 UIScrollView(所以典型的模型带有一个 UIPageControl 并在页面之间左右拖动/轻弹),我的工作正常。奇怪的是,当我想摆脱弹跳(这样你在左右两侧的 UI 后面看不到黑色)时,突然分页不再起作用。

换句话说,当:

scrollView.pagingEnabled = YES;
scrollView.bounces = YES;

一切正常,除了我不喜欢 page(0) 和 page(length-1) 的弹跳。但是当我这样做时:

scrollView.pagingEnabled = YES;
scrollView.bounces = NO;

它停止在每个页面上对齐,而是将所有页面一起视为一个长页面。所以似乎由于某种原因分页依赖于弹跳,只要我能以某种方式停止弹跳就可以了。那么,有没有其他方法可以摆脱它呢?还是我做错了什么?

编辑: 解决方案:

@interface PagingScrollView : UIScrollView
@end

@implementation PagingScrollView

- (id)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame])
    {
        self.pagingEnabled = YES;
        self.bounces = YES;
    }
    return self;
}

- (void)setContentOffset:(CGPoint)offset
{
    CGRect frame = [self frame];
    CGSize contentSize = [self contentSize];
    CGPoint contentOffset = [self contentOffset];

    // Clamp the offset.
    if (offset.x <= 0)
        offset.x = 0;
    else if (offset.x > contentSize.width - frame.size.width)
        offset.x = contentSize.width - frame.size.width;

    if (offset.y <= 0)
        offset.y = 0;
    else if (offset.y > contentSize.height - frame.size.height)
        offset.y = contentSize.height - frame.size.height;

    // Update only if necessary 
    if (offset.x != contentOffset.x || offset.y != contentOffset.y)
    {
        [super setContentOffset:offset];
    }
}

@end

【问题讨论】:

    标签: iphone user-interface uiscrollview paging bounce


    【解决方案1】:

    最好的办法是编写一个UIScrollView 子类并手动实现所需的行为。您应该可以先将pagingEnabledbounces 都设置为YES,然后用您自己的剪裁边缘的方法覆盖-setContentOffset:

    【讨论】:

    • 哇,这太愚蠢了。好吧,我试试看,你可能就是这个话题的“大赢家”。
    • 它可以工作,但是你需要覆盖 -setContentOffset,而不是 -setContentOffset:animated,因为后者会调用一个并不总是被调用的函数,而前者会覆盖 contentOffset 的 mutator 函数,所以你'将捕获所有情况。
    • 这很奇怪。我做了很多这样的事情,通常单参数方法调用动画变体动画:YES
    • 这只是 iOS 3.x 的问题。 iOS 4.x 似乎可以解决这个问题。即即使将反弹设置为 NO,分页仍然有效。
    • 乔尼是对的。在 iOS 4.X 的情况下,分页不需要反弹。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多