草庐IT

swift - 导航栏下方的菜单在 Swift 中带有动画

coder 2023-09-15 原文

我的问题很简单,当我点击(在导航栏上)时,我不知道如何在导航栏下方显示列表(菜单)。

我想做与这张图片相同的事情:

我试着这样做:

func doSomething(){

      let navigationBarHeight = self.navigationController?.navigationBar.frame.height ?? 0
      print(navigationBarHeight)
      let heightTotal = UIApplication.shared.statusBarFrame.height + navigationBarHeight

      DispatchQueue.main.async(execute: {
         appDelegate.infoView(message: "test", Yorigin: heightTotal, color: colorBlueFollow)
      })
   }

在 appDelegate 中:

func infoView(message: String, Yorigin: CGFloat ,color: UIColor){
      if infoViewIsShowing == false{
         infoViewIsShowing = true

//         let infoViewHeight = self.window!.bounds.height / 14.2
         let infoViewHeight = self.window!.bounds.height / 4.2
         let infoViewY = Yorigin - infoViewHeight

         let infoView = UIView(frame: CGRect(x: 0, y: infoViewY, width: self.window!.bounds.width, height: infoViewHeight))
         infoView.backgroundColor = color
         self.window!.addSubview(infoView)

         let infoLabelWidth = infoView.bounds.width
         let infoLabelHeight = infoView.bounds.height + UIApplication.shared.statusBarFrame.height/2

         let infoLabel = UILabel()
         infoLabel.frame.size.width = infoLabelWidth
         infoLabel.frame.size.height = infoLabelHeight
         infoLabel.numberOfLines = 0

         infoLabel.text = message
         infoLabel.font = UIFont(name: "HelveticaNeue", size: 11)
         infoLabel.textColor = UIColor.white
         infoLabel.textAlignment = .center

         infoView.addSubview(infoLabel)

         // Animate errorView
         UIView.animate(withDuration: 0.2, animations: {

            // Move down
            infoView.frame.origin.y = Yorigin

         }, completion: { (finished: Bool) in
            if finished{

               UIView.animate(withDuration: 0.2, delay: 3, options: .curveLinear, animations: {
                  // move up
                  infoView.frame.origin.y = infoViewY

               }, completion: { (finished: Bool) in
                  if finished {
                     infoView.removeFromSuperview()
                     infoLabel.removeFromSuperview()
                     self.infoViewIsShowing = false
                  }
               })

            }
         })


      }
   }

问题是,显示的 View 从导航栏上方经过,这不是我想要的效果。你知道我该怎么做吗?

最佳答案

这一行

self.window!.addSubview(infoView)

将其置于窗口中所有其他 View (包括导航栏)之上。

您应该搜索 View Controller 层次结构,从 rootViewController 开始,找到要将 View 添加到的 Controller 。

查看此问题的答案以获得一些选项:iPhone -- How to find topmost view controller

关于swift - 导航栏下方的菜单在 Swift 中带有动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44270566/

有关swift - 导航栏下方的菜单在 Swift 中带有动画的更多相关文章

  1. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  2. ruby - Ruby 中的选项菜单 - 2

    我正在尝试在Ruby中创建一个菜单,以便根据用户输入的内容,取决于调用的类。然后在这种情况下它将返回到“Main”或类“Options”。我希望有人能帮助我。这是我的代码。modulePhysicsG=21C=20000Pi=3.14D=100endclassOptionsputs"Pleaseselect1forAccelerationand2forEnergy."option=gets()ifoption==1thenputs"AccelCalc"#ThisisthebitthatneedstodirecttheusertotheclassAccelCalcelseputs"Ene

  3. LVGL V8动画 - 2

    动画/*INITIALIZEANANIMATION 初始化一个动画*-----------------------*/lv_anim_ta;lv_anim_init(&a);/*MANDATORYSETTINGS 必选设置*------------------*//*Setthe"animator"function 设置“动画”功能*/lv_anim_set_exec_cb(&a,(lv_anim_exec_xcb_t)lv_obj_set_x);/*Setthe"animator"function*/lv_anim_set_var(&a,obj);/*Lengthoftheanim

  4. ruby - 下拉菜单在应该被选中的时候没有被选中……为什么? - 2

    我正在尝试解决我们测试中的一个错误,我认为它应该有效。我很确定这是selectize或capybara中的错误,但我不明白为什么。我已经进入了capybara的源代码,一切似乎都在正常工作。我真的不确定如何前进。为了测试这个错误,我已经尽可能地把这个错误剥离成一个小的testapplication.请参阅下面的设置bugs/show.html.erbOneTwoThreeFourOneTwoThreeFourbug_spec.rbfeature'bug'doit"specsetup",js:truedovisitbug_pathfind('div.selectize-inputinpu

  5. ruby-on-rails - 在 Rails 3 中向 Active Admin 添加全局导航项的最佳方法是什么 - 2

    我正在尝试将全局导航菜单项添加到我的ActiveAdmin安装(在“仪表板”导航按钮旁边)。ActiveAdmin说这在他们的网站上是可能的,但他们没有任何关于如何实现它的文档。有谁知道如何做到这一点?编辑:抱歉,我应该更清楚。我想添加一个指向由任意文本/链接对组成的全局导航的链接。IE,如果我想添加一个链接到http://google.com在事件管理员的全局导航中使用文本“Google”,我将如何实现? 最佳答案 ActiveAdmin.register_page"Google"domenu:priority=>1,:label

  6. 千耘农机导航的“星地一体”能力究竟是什么? - 2

    伴随农业机械化和智能化的发展,越来越多的人开始使用农机自动驾驶系统助力耕作,千耘农机导航的“星地一体”能力可有效解决信号受限的问题,实现作业提效。究竟什么是“星地一体”,又是如何解决智能化农机作业的痛点的?下面为大家揭秘。农机效率通常受限于通信网络目前虽然我国通讯网络的人口覆盖率达到99%,但地面移动通讯网络覆盖率仍小于国土面积的40%,而很多农田所在区域恰是山区、戈壁滩等偏远地区。两省交界地也会出现通信信号不稳定的状况;而国内大部分农机自动驾驶系统非常依赖通信网络,当通信网络弱的时候会出现系统掉线的现象,必须得携带小基站才能正常使用,极为繁琐。Q:什么是千耘农机导航“星地一体”能力?A:是星

  7. ruby-on-rails - 在 Rails 中,如何使用字符串数组实现 HTML 选择菜单? - 2

    我有一个FinancialDocument#document_type模型属性。我想让用户从由字符串数组填充的HTML选择菜单中选择文档类型...doctypes=['Invoice','Packingslip','Other']对于每个选项,显示的标签和返回的值都是相同的。我查看了select和collection_select助手,但它们似乎适合选择子模型,而不仅仅是一个String值。我找不到如何让它们达到我的目的。这是我正在尝试的方法(我使用的是Haml,而不是Erb)...form_for(@financial_document)do|f|-doctypes=['Invoic

  8. ruby - ruby 中带有多行字符串的空格 - 2

    我有一个多行字符串的空白问题。我在生成一些SQL的代码中有类似的内容。defgenerate_sql但是我的SQL缩进全乱了,这是我不想要的。"UPDATEpage\nSETview_count=10;\n"我能做到defgenerate_sql输出的正是我想要的"UPDATEpage\nSETview_count=10;\n"但是我的代码缩进全乱了,我真的不想要这样。关于如何最好地实现我所追求的目标有什么建议吗? 最佳答案 Ruby2.3.0使用squigglyheredoc很好地解决了这个问题.请注意示例之间波浪号/连字符的区别

  9. ruby-on-rails - Rails 中带后备功能的动态命名空间 Controller - 2

    我对新的Rails应用程序有一个有点奇怪的要求。我需要构建一个应用程序,其中所有路由都在多个命名空间中定义(让我解释一下)。我想要一个应用程序,其中学校科目(数学、英语等)是namespace:%w[mathenglish].eachdo|subject|namespacesubject.to_symdoresources:studentsendend这很棒而且有效,但它需要我为每个主题创建一个命名空间StudentsController,这意味着如果我添加一个新主题,那么我需要创建一个新Controller。我想创建一个Base::StudentsController,如果Math:

  10. ruby - Carrierwave + MiniMagick - 如何将动画 GIF 压缩到第一帧? - 2

    有人知道如何使用Carrierwave+MiniMagick将动画GIF压缩到第一帧吗? 最佳答案 我认为MiniMagick有一些变化,因为我只花了三个小时试图找出为什么Andrey的代码对我不起作用。我收到以下错误:ActiveRecord::RecordInvalid(Validationfailed:ImageFailedtomanipulatewithMiniMagick,maybeitisnotanimage?OriginalError:Command("mogrify-scene/var/folders/0o/0oqN

随机推荐