uiscrollview 水平拉动以根据拖动的距离选择对象
Posted
技术标签:
【中文标题】uiscrollview 水平拉动以根据拖动的距离选择对象【英文标题】:uiscrollview pull horizontal to select object base on how far you drag 【发布时间】:2013-08-20 06:23:08 【问题描述】:我有一个 uiscrollview,我放了 4 个 uiviews 来做一个选项。我为 uiview1 放标签 1,为 uiview2 放标签 2,对于 uiview 3,我放标签 3,uiview4 我放标签 4。
之后我隐藏了 4 个 uiview,因此每次下拉屏幕时,4 个 uiview 都会根据用户拉动的距离显示。
谁能举例说明当你在 ios iphone 中拉屏幕时如何显示选择了哪个 uiview?
【问题讨论】:
【参考方案1】:您可以使用滚动视图的 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.......
将此条件从最后一个视图应用到第一个视图。
【讨论】:
你能举个例子吗? 嗨@OMK,当我停止拉动并且(uiview1,uiview2 ...)内容将显示在屏幕上的某个位置时,您能否提供更多示例。我是ios新手,对编码不熟悉。 在拉/拖滚动视图后,要标记为选中的可见 uiview。对吗? 是的,就像 if(scrollView.contentOffset.y == -60) selectedLabel.text = uiview1。嗯,我不知道确切的脚本。 我已经给出了一些示例逻辑,请尝试并告诉我。【参考方案2】:供您参考,您可以从此处查看页面控件的示例实现。 http://developer.apple.com/library/ios/#samplecode/PageControl/
对于您想要的实现,令您惊讶的是,滚动视图的宽度实际上小于 320(或 480)。要设置的魔法属性是:
scrollView.clipsToBounds = 否 此实现的唯一问题是,如果触摸超出了滚动视图的范围,则滚动视图不会获得任何触摸事件。这可以通过将其父 hitTest 事件传递给 scrollView 来解决。
只是为了链接到更好的解释:UIScrollView 水平分页,如 Mobile Safari 选项卡
与我推荐的略有不同,但做同样的事情。
编辑:
我有一个名为 LXPagingViews 的小项目,它可以执行上述操作,希望以开箱即用的方式(请给我一个拉取请求或问题反馈):https://github.com/lxcid/LXPagingViews
【讨论】:
你为什么要抄袭?答案和开源插件类来自@lxcid,而不是你。 ***.com/questions/5618780/…以上是关于uiscrollview 水平拉动以根据拖动的距离选择对象的主要内容,如果未能解决你的问题,请参考以下文章