0

我有一个 uiscrollview,我放了 4 个 uiviews 来做一个选项。我为 uiview1 放置标签 1,为 uiview2 放置标签 2,为 uiview 3 我放置标签 3 和 uiview4 我放置标签 4。

之后,我隐藏了 4 个 uiview,因此每次下拉屏幕时,4 个 uiview 将根据用户拉动的距离显示。

当您在 ios iphone 中拉屏幕时,谁能举例说明如何显示选择了哪个 uiview?

4

2 回答 2

0

供您参考,您可以从此处查看页面控件的示例实现。http://developer.apple.com/library/ios/#samplecode/PageControl/

对于您想要的实现,令您惊讶的是,滚动视图的宽度实际上小于 320(或 480)。要设置的魔法属性是:

scrollView.clipsToBounds = NO 此实现的唯一问题是,如果触摸超出 scrollView 的边界,则滚动视图不会获得任何触摸事件。这可以通过将其父 hitTest 事件传递给 scrollView 来解决。

只是为了链接到更好的解释: UIScrollView Horizo​​ntal paging like Mobile Safari tabs

与我推荐的略有不同,但做同样的事情。

编辑:

我有一个名为 LXPagingViews 的小项目,它可以执行上述操作,希望以开箱即用的方式(请给我一个拉取请求或问题反馈):https ://github.com/lxcid/LXPagingViews

于 2013-08-20T06:29:47.797 回答
0

您可以使用滚动视图的 contentOffset 来查找用户拉动滚动视图的距离。

使用滚动查看委托方法:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

通过检查视图的框架和 scrollView contentOffset,您可以确定哪个视图是可见的(即 uiview1、uiview2、..)。

编辑:

你的逻辑应该是这样的:

if(uiview1.frame.origin.y - scrollView.contentOffset.y > uiview1.frame.origin.y + uiview1.frame.size.height)
{
    //your logic for selection of uiview1
}else if.......

将此条件从最后一个视图应用到第一个视图。

于 2013-08-20T06:30:29.193 回答