Nic*_*ill 155 cocoa-touch objective-c ios
侧面滑动菜单似乎正在成为一种更常见的界面元素,因为更多信息被塞进每个iPhone应用程序中.Facebook已将其纳入最新版本,新的Gmail应用程序似乎也包括在内.我想知道是否有人想到最有效的方式来开发这样的东西,因为它正在成为一个更常见的界面元素.虽然我对如何构建这个有自己的想法,但我很想知道其他人的想法.

Chr*_*ler 84
Tom Adriaenssen有一个很棒的图书馆:Inferis/ViewDeck
它非常易于使用,并且具有相当大的跟随力.
编辑:
对于更轻量级的东西,请查看:mutualmobile/MMDrawerController
它没有ViewDeck的所有功能,但更容易修改和扩展.
Mic*_*ick 48
我为此创建了一个库.它被称为MFSideMenu.
其中包括支持iphone + ipad,纵向+横向,左侧或右侧菜单,UITabBarController和平移手势.
Zak*_*man 34
我最近遇到过这个,实际上并未查看代码或测试控件,但看起来它可能是一个非常不错的起点.
编辑:读者还应该看看其他答案:)
kch*_*ood 29
看看MMDrawerController:
我们找不到我们喜欢的图书馆,所以我们只是推出了自己的图书馆.
Ján*_*nos 12
您必须设置self.navigationController.view的框架或中心的关键想法.有两个事件,你必须处理.(1)barButtonItem按.(2)因滑动而平移手势.
您可以将视图控制器发送到后台,如下所示:
[self.view sendSubviewToBack:menuViewController.view];
- (void)viewDidLoad
{
[super viewDidLoad];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(buttonPressed:)];
UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[self.navigationController.view addGestureRecognizer:panGestureRecognizer];
self.navigationItem.leftBarButtonItem = barButtonItem;
}
- (void)buttonPressed:(id)sender {
CGRect destination = self.navigationController.view.frame;
if (destination.origin.x > 0) {
destination.origin.x = 0;
} else {
destination.origin.x = 320;
}
[UIView animateWithDuration:0.25 animations:^{
self.navigationController.view.frame = destination;
}];
}
- (void)handlePan:(UIPanGestureRecognizer *)recognizer
{
static CGPoint originalCenter;
if (recognizer.state == UIGestureRecognizerStateBegan)
{
originalCenter = recognizer.view.center;
} else if (recognizer.state == UIGestureRecognizerStateChanged)
{
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(originalCenter.x + translation.x, originalCenter.y);
}
else if (recognizer.state == UIGestureRecognizerStateEnded || recognizer.state == UIGestureRecognizerStateCancelled || recognizer.state == UIGestureRecognizerStateFailed)
{
if (recognizer.view.frame.origin.x < 160) {
[UIView animateWithDuration:0.25 animations:^{
recognizer.view.center = CGPointMake(384, 487.5);
}];
} else {
[UIView animateWithDuration:0.25 animations:^{
recognizer.view.center = CGPointMake(384 + 320, 487.5);
}];
}
}
}
Run Code Online (Sandbox Code Playgroud)
pkl*_*luz 11
Facebook的实现在UINavigationBar上放置了一个UIPanGestureRecognizer.因此允许在需要的地方捕捉滑动.
这允许做一些事情,例如直接识别x/z中的触摸方向以及它们发生的速度.
还有这样的修补UIViews(一次在屏幕上显示不同的任务 - >因此不同的控制器)应该(我很想说必须)使用iOS新的ViewController-Containment功能.没有它的每一个实现都是不好的,因为它以一种非Apple意图的方式修改了视图层次结构.
旁注:如果你真的很好奇如何尽可能接近Facebook的方式,请查看我在Github PKRevealController上开源的项目.
开发人员已经创建了数十个不同的库来实现iOS应用程序的Facebook/Path风格导航.我可以列出所有这些,但是你要求最好的一个,这是我用来实现侧滑动导航菜单的两个选择:
1)ECSlidingViewController 它也很容易实现和使用Storyboard.我没有遇到任何问题,也没有收到任何错误或类似的错误.我提供的链接几乎有所有解释才能使用它.
2)SWRevealViewController 这个库很容易使用,你可以在这里找到一个教程,它展示了如何使用所有的解释和图像来实现它.您可以按照教程进行操作,稍后再次感谢我.
| 归档时间: |
|
| 查看次数: |
93850 次 |
| 最近记录: |