代码之家  ›  专栏  ›  技术社区  ›  Eli

UIScrollView-(反弹=否)似乎覆盖(PaginEnabled=是)

  •  8
  • Eli  · 技术社区  · 15 年前

    换句话说,当:

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

    一切正常,除了我不喜欢第(0)页和第(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
    
    1 回复  |  直到 15 年前
        1
  •  9
  •   rpetrich    15 年前

    你最好的办法是写一封信 UIScrollView pagingEnabled bounces 双方都准备好了 YES 然后覆盖 -setContentOffset: