滚动上带有隐藏导航栏的页面菜单

Posted

技术标签:

【中文标题】滚动上带有隐藏导航栏的页面菜单【英文标题】:Page menu with Hide navigation bar on Scroll 【发布时间】:2016-09-27 07:17:43 【问题描述】:

我想要导航栏扩展中的菜单并在滚动时隐藏导航栏,但扩展名除外。

我可以通过PageMenu“PageMenu”实现菜单并通过AMScrollingNavbar隐藏导航栏

但我现在面临的问题是导航栏隐藏但视图不会随着导航栏向上移动

func loadControllers()

    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    let topViewController = storyboard.instantiateViewControllerWithIdentifier("TopNewsController") as!
    TopNewsController

    topViewController.title = "TOP"
    controllerArray.append(topViewController)

    let briefViewController = storyboard.instantiateViewControllerWithIdentifier("BriefViewController") as!
    BriefViewController

    briefViewController.title = "BRIEFS"
    controllerArray.append(briefViewController)


    let videoViewController = storyboard.instantiateViewControllerWithIdentifier("VediosViewController") as!
    VediosViewController

    videoViewController.title = "VIDEOS"
    controllerArray.append(videoViewController)


    // Customize menu 
    parameters = [
        .ScrollMenuBackgroundColor(UIColor.navigationBarColor()),
        .ViewBackgroundColor(UIColor(red: 20.0/255.0, green: 20.0/255.0, blue: 20.0/255.0, alpha: 1.0)),
        .SelectionIndicatorColor(UIColor.whiteColor()),
        .BottomMenuHairlineColor(UIColor(red: 70.0/255.0, green: 70.0/255.0, blue: 80.0/255.0, alpha: 1.0)),
        .MenuItemFont(UIFont(name: "HelveticaNeue-Bold", size: 14.0)!),
        .MenuHeight(expressTribuneUtilities.convertIphone6ToIphone5(48)),
        .MenuItemWidth(90.0),
        .CenterMenuItems(true)
    ]


    AppDelegate.getInstatnce().nav = self.navigationController as! ScrollingNavigationController
    AppDelegate.getInstatnce().nav.scrollingNavbarDelegate = self


    // Initialize scroll menu
    pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 64.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters)

    self.view.addSubview(pageMenu!.view)


从菜单中添加的类调用 Scroll 方法

        AppDelegate.getInstatnce().nav.followScrollView(tableMainView, delay: 0.5)

【问题讨论】:

最后一行的self.view 是什么。 【参考方案1】:
    AppDelegate.getInstatnce().nav = self.navigationController as! ScrollingNavigationController
AppDelegate.getInstatnce().nav.scrollingNavbarDelegate = self

将这两行更改为这样它不会起作用,因为您正在为其他实例设置委托而不是导航。

        let navController = AppDelegate.getInstatnce().window?.rootViewController as! ScrollingNavigationController
    navController.scrollingNavbarDelegate = self

在你的控制器中实现 delgate 并设置你的视图的原点 w.r.t 你的 滚动视图。

【讨论】:

以上是关于滚动上带有隐藏导航栏的页面菜单的主要内容,如果未能解决你的问题,请参考以下文章

带有半透明导航栏的滚动条

UINavigationController 推送带有隐藏导航栏的视图控制器

Android - 为带有导航抽屉和应用栏的应用完全隐藏状态和导航栏

向上滚动 tableview 以隐藏导航栏的一半,整个表格得到偏移

vue中导航栏的显示和隐藏

将带有可见导航栏的视图控制器弹出到带有隐藏导航栏的视图控制器时,带有 interactivePopGestureRecognizer 的黑色区域