我一直在寻找如何使用UIScrollview包装(循环)制作滚动菜单。 我检查了这个question,示例有效,也许这是一个很好的方法。
但是我不需要只显示一个页面(图像),而是需要显示3个页面,并且能够一次滚动一页。
那么如何将UIScrollView页面大小设置为比框架小1/3(我认为这样会起作用)??
可以实现吗?如果没有,请指导我到另一个方向
由于
答案 0 :(得分:5)
我相信你所说的是上一页的一部分和下一页的一部分可见。这样做的方法是将滚动视图的框架设置为您想要的(例如,小于屏幕),然后关闭滚动视图的子视图剪辑。这将达到您所追求的效果。
答案 1 :(得分:1)
[theScrollView setFrame:<a frame>];
将设置滚动视图的框架[theScrollView setContentSize:<a Size>];
设置滚动视图的内容大小1.中的大小应该是2中设置大小的1/3。
答案 2 :(得分:1)
过了一段时间,我最终需要再次解决这个问题。
我找到了一个适合我的解决方案。
检查this answer:
- 将您的scrollView大小更改为您想要的页面大小
- 设置
scroll.clipsToBounds = NO
创建一个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; }
设置
HackClipView.clipsToBounds = YES
- 将您的scrollView放入此HackClipView(具有您想要的总滚动大小)
醇>有关详细信息,请参阅this answer
更新的 正如lucius回答中所述,您现在可以实现
UIScollViewDelegate
协议并使用- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
方法。因为targetContentOffset
是一个指针。使用此方法不能保证滚动视图页面的结果相同,因为用户可以一次滚动浏览多个页面。但是将descelerationRate
设置为fast
将几乎给您相同的结果