2011-12-14 191 views
2

我一直在寻找如何使UIScrollview包装(循环)的滚动菜单。 我检查了这个question,这个例子有效,也许这是一个好方法。设置UIscrollView页面大小

但不是只显示一个页面(图片)我需要显示3页,并能够在一次滚动一页。

那么我怎样才能设置UIScrollView页面尺寸比框架小1/3(我认为这样它会工作)?

是否可以实现?如果不是,请告诉我去另一个方向

感谢

+1

其完成的;) 我如何关闭问题? – Frade 2011-12-14 17:16:23

+0

谢谢莎拉..并为错误感到遗憾..;) – Frade 2012-01-11 18:55:36

+0

那么你是如何解决这个问题的?您正试图使其页面向右分页,例如,左侧显示的前一个屏幕的1/3是正确的?如果你发现如何缩小每一页,我很想知道如何,谢谢。 – Ryan 2012-04-17 18:46:45

回答

1

过了一段时间,我最终需要再次解决这个问题。

我找到了适合我的解决方案。

检查this answer

  1. 更改您的滚动视图大小,你想
  2. 设置页面大小的scroll.clipsToBounds = NO
  3. 创建UIView子类(如HackClipView)和覆盖则hitTest:withEvent:方法方法

    -(UIView *) hitTest:(CGPoint) point withEvent:(UIEvent *)event 
    {  
        UIView* child = [super hitTest:point withEvent:event]; 
        if (child == self && self.subviews.count > 0) 
        { 
         return self.subviews[0]; 
        } 
        return child; 
    } 
    
  4. HackClipView.clipsToBounds = YES

  5. 把你的滚动视图在此HackClipView(你想要的总的滚动大小)

更多细节

this answer

更新: 正如卢修斯回答,你可以说现在执行UIScollViewDelegate协议并使用- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset方法。由于targetContentOffset是一个指针。使用这种方法并不能保证用户可以同时滚动浏览多个页面,而使用滚动视图页面获得相同的结果。但设置descelerationRatefast几乎给你同样的结果

1
  1. [theScrollView setFrame:<a frame>];将设置滚动视图
  2. [theScrollView setContentSize:<a Size>];的框架设置滚动视图

大小的内容大小在1.应该是在2设置的大小的三分之一。

5

我相信你在说的是有前面的一部分页面和下一页的一部分可见。这样做的方法是将滚动视图的框架设置为您想要的(例如,小于屏幕),然后关闭滚动视图的子视图剪辑。这将达到你以后的效果。