拉动以显示iOS中隐藏的类似navBar的菜单?如GetPocket App中所见

时间:2012-09-11 07:32:06

标签: objective-c ios xcode uiscrollview uitextview

我一直在疯狂地对待这一个。它可能是我需要退后一步并找出实现它的最简单方法的事情之一。也找不到任何东西。我知道了这个问题。

在掌上应用程序中,当您下拉菜单时,就像searchBar一样显示自己。在这种情况下,如果松开它,当你将它拉过中间点时,会出现弹簧到位。如果它在中途点之前释放,则条形图将快速恢复并隐藏。如图所示

enter image description here

在我的情况下,我一直试图复制这个没有运气。在我的例子中,我在UIViewController视图中有一个UITextView。我想我错了。

我可以通过在屏幕外启动隐藏的UIScrollView来使用它,然后当我按下按钮时,UIScrollView显示自己。问题是这个方法涵盖了所有内容,因此我将不得不调整大小并重新布局一堆视图。这可能在UITableView中吗?我希望它是一个拉动操作,只是想在这个栏中放一些TextStrings / Labels。

提前谢谢。

2 个答案:

答案 0 :(得分:6)

感觉就像你需要一个UIScrollView(或UITableView)并将你想要显示的菜单放在顶部(例如在表视图标题中),然后获得滚动的委托回调。

UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView

您可能还需要注意一些拖动委托回调

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

您最初可以通过将内容偏移设置为菜单的高度来隐藏菜单,然后捕获委托回调以进行滚动,如果滚动超过菜单大小的一半,则设置内容偏移动画。 / p>

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated

答案 1 :(得分:1)

如果我正确理解了您的目标,则不需要滚动视图。

我要做的是让一个简单的UIView包含你需要的所有东西,并把它放在可见区域之外。这将是您的下拉视图。然后在UIPanGestureRecognizer的视图中添加UIViewController,并使用它来跟踪手指的移动并相应地更新下拉视图的框架。然后在此更新方法中,您只需检查位置是否已超过某个阈值,如果是,则让下拉视图捕捉到其最终位置(当然使用动画)。

如果您不熟悉UIPanGestureRecognizer,那么这里有一个非常好的教程: http://www.raywenderlich.com/6567/uigesturerecognizer-tutorial-in-ios-5-pinches-pans-and-more