iphone - 如何使全局菜单悬停在所有屏幕上方,就像 Path 一样

标签 iphone ios ipad uikit

我需要实现类似路径菜单之类的东西,无论用户留在哪个屏幕,它都在应用程序中全局可用。

enter image description here

请注意 我不是在问如何实现动画/样式设置,我只是对布局菜单交叉 View Controller 的正确方法感到好奇。

我目前采取的方法是:

  • 创建一个容器 View Controller ,使其成为
    应用的rootViewController
  • 将功能 View Controller 作为子 Controller 添加到根目录
  • 将全局菜单创建为 View ,将其作为 subview 插入到 Root View
    Controller 的 View ,使其出现在其他 subview 之上
  • 当用户在全局菜单中选择一个菜单项时,我需要将
    对应的功能 View Controller 的 View 在前面,但是
    仍在全局菜单 View 下

  • 这种方法的缺点是:
  • 呈现模态视图 Controller 将阻止全局菜单
  • 必须预先加载每个功能 View Controller

  • 简而言之,我设法达到了 UI/UX 的期望,但从技术上讲,我觉得我做错了。有没有人有类似的项目经验,请分享您的想法。

    最佳答案

    有两种解决方案,

  • 您可以将全局菜单添加到 AppDelegate,
  • (BOOL)应用程序:(UIApplication *)应用程序 didFinishLaunchingWithOptions:(NSDictionary *)launchOption

  • 然后您可以将全局菜单添加到导航 Controller View 中,例如,
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    
        // Override point for customization after application launch.
        self.window.backgroundColor = [UIColor whiteColor];
    
        self.viewController = [[HomeViewController alloc] initWithNibName:nil bundle:nil];
        self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    
        self.navigationController.delegate = self.viewController;
        self.window.rootViewController = self.navigationController;
    
        // Your Global Menu
        UIButton *myButton ...
        [self.navigationController.view addSubview:myButton];  
    
        [self.window makeKeyAndVisible];
        return YES;
    
    }
    
  • 您可以创建一个 BaseViewController,并将全局按钮添加到 BaseViewController。然后所有其他 View Controller 都继承 BaseViewController。所以一些 View Controller 可能有全局菜单。如果某些 View Controller 不需要全局菜单,只需继承普通的 UIViewController。

  • 如,
    #import "GlobalMenuView.h"
    
    @interface BaseViewController : UIViewController
    {
        UIButton *btnMenu;
        GlobalMenuView *globalMenu;
    }
    
    @end  
    

    然后想要全局菜单的 View Controller 就可以了,
    #import "BaseViewController.h"
    
    @interface YourOtherViewController: BaseViewController
    {
    
    }
    
    @end
    

    关于iphone - 如何使全局菜单悬停在所有屏幕上方,就像 Path 一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203448/

    相关文章:

    iphone - 在 iPhone 中设置 UI 导航栏的标题

    iphone - iOS: "open: Permission denied"

    iphone - 在 NSString 中搜索单词

    iphone - 从另一位开发人员那里接手了 iPhone 的应用程序开发并收到代码签名错误

    ios - 在快速构建 UISlider 时发送到实例的无法识别的选择器

    ios - MITM 攻击报告已弃用的 NSURLConnectionDelegate

    objective-c - 如何在2个iPad之间交换数据?

    javascript - html5 应用程序音频不工作

    iphone - 为什么要使用像 CGRectMake 这样的函数?

    ios - 让推送像现在一样生动