我一直在疯狂地对待这一个。它可能是我需要退后一步并找出实现它的最简单方法的事情之一。也找不到任何东西。我知道了这个问题。
在掌上应用程序中,当您下拉菜单时,就像searchBar一样显示自己。在这种情况下,如果松开它,当你将它拉过中间点时,会出现弹簧到位。如果它在中途点之前释放,则条形图将快速恢复并隐藏。如图所示
在我的情况下,我一直试图复制这个没有运气。在我的例子中,我在UIViewController视图中有一个UITextView。我想我错了。
我可以通过在屏幕外启动隐藏的UIScrollView来使用它,然后当我按下按钮时,UIScrollView显示自己。问题是这个方法涵盖了所有内容,因此我将不得不调整大小并重新布局一堆视图。这可能在UITableView中吗?我希望它是一个拉动操作,只是想在这个栏中放一些TextStrings / Labels。
提前谢谢。
答案 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