设置UIscrollView页面大小

时间:2011-12-14 12:34:46

标签: iphone ipad loops uiscrollview

我一直在寻找如何使用UIScrollview包装(循环)制作滚动菜单。 我检查了这个question,示例有效,也许这是一个很好的方法。

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

那么如何将UIScrollView页面大小设置为比框架小1/3(我认为这样会起作用)??

可以实现吗?如果没有,请指导我到另一个方向

由于

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

  1. [theScrollView setFrame:<a frame>];将设置滚动视图的框架
  2. [theScrollView setContentSize:<a Size>];设置滚动视图的内容大小
  3. 1.中的大小应该是2中设置大小的1/3。

答案 2 :(得分:1)

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

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

检查this answer

  
      
  1. 将您的scrollView大小更改为您想要的页面大小
  2.   
  3. 设置scroll.clipsToBounds = NO
  4.   
  5. 创建一个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;
    }
    
  6.   
  7. 设置HackClipView.clipsToBounds = YES

  8.   
  9. 将您的scrollView放入此HackClipView(具有您想要的总滚动大小)
  10.         

    有关详细信息,请参阅this answer

         

    更新的   正如lucius回答中所述,您现在可以实现UIScollViewDelegate协议并使用- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset方法。因为targetContentOffset是一个指针。使用此方法不能保证滚动视图页面的结果相同,因为用户可以一次滚动浏览多个页面。但是将descelerationRate设置为fast几乎给您相同的结果