在 Swift 4 中创建类似 Spotlight 的窗口?

2024-03-15

我想创建一个窗口作为我的应用程序的一部分,在按下某个按键后显示一个类似聚光灯的窗口。

但我所能得到的只是隐藏title:

override func viewWillAppear() {
    self.view.window?.titleVisibility = .hidden
    self.view.window?.titlebarAppearsTransparent = true
    self.view.window?.styleMask.insert(.fullSizeContentView)
}

结果是:

如何使用 Xcode 10 和 Swift 创建这样的视图?


您可以使用 NSPanel 创建自定义窗口

final class Panel: NSPanel {
    init(contentRect: NSRect, backing: NSWindow.BackingStoreType, defer flag: Bool) {
        super.init(contentRect: contentRect, styleMask: [.titled, .resizable, .closable, .fullSizeContentView], backing: backing, defer: flag)
        
        self.isFloatingPanel = true
        self.level = .floating
        self.collectionBehavior.insert(.fullScreenAuxiliary)
        self.titleVisibility = .hidden
        self.titlebarAppearsTransparent = true
        self.isMovableByWindowBackground = true
        self.isReleasedWhenClosed = false
        self.standardWindowButton(.closeButton)?.isHidden = true
        self.standardWindowButton(.miniaturizeButton)?.isHidden = true
        self.standardWindowButton(.zoomButton)?.isHidden = true
    }
    
    // `canBecomeKey` and `canBecomeMain` are required so that text inputs inside the panel can receive focus
    override var canBecomeKey: Bool {
        return true
    }
    
    override var canBecomeMain: Bool {
        return true
    }
}

并用在AppDelegate像这样:

final class AppDelegate: NSObject, NSApplicationDelegate {
   lazy var panel: NSPanel = FloatingPanel(
        contentRect: NSRect(x: 0, y: 0, width: 700, height: 320),
        backing: .buffered,
        defer: false
    )

   func applicationDidFinishLaunching(_ aNotification: Notification) {
        // panel.contentView = ...
        panel.makeKeyAndOrderFront(nil)
        panel.center()
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Swift 4 中创建类似 Spotlight 的窗口? 的相关文章

  • 我的游戏中应该有多少个视图控制器?

    我开始使用 spritekit 构建我的第一个游戏 现在我只有一个视图控制器来呈现开始屏幕场景 override func viewDidLoad super viewDidLoad let scene StartScreenScene C
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • 致命错误:在字典中发现“地理编码地标”类型的重复键。 (Mapbox 地理编码器)

    我引用 这通常意味着要么该类型违反了 Hashable 的要求 要么此类字典的成员在插入后发生了变化 我正在使用 Mapbox Geocoder 当发生此运行时错误时 我的 XCode 将我带到线程 1 0 swift runtime on
  • 在故事板中的视图控制器之间滑动手势

    我希望添加左右滑动手势来在视图控制器之间进行更改 这是否可能 并且有没有一种简单的方法可以在故事板中执行此操作 谢谢 故事板允许您在两个视图控制器之间设置 Segues 我想说首先在视图之间附加 Segues 给它一个标识符 然后使用类似的
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们
  • 在视图控制器之间传递数据使用从嵌入导航控制器的视图到 tabbarcontroller 的 Segue

    我有两个视图 我想将数据从一个视图传递到下一个视图 第一个视图是我想要传递给下一个视图的数据的地方 我们称之为SourceViewController 然而SourceViewController嵌入在一个NavigationViewCon
  • 如何测试 UITextField 是否为零?

    我正在尝试制作我的应用程序的一部分 如果该人不更改我的 UITextField 中的空白文本 那么他 她将无法继续下一步 基本上 我想测试 UITextField 的 nil 文本 我已经使用了 if text 方法 但是如果用户单击 UI
  • Xcode 存档上传失败并出现错误

    我正在尝试从 xCode 将新版本上传到 iTunesConnect 但每次我都会遇到此问题 问题是什么 我该如何解决这个问题 最近 我开始在上传过程中遇到问题 Xcode 经常卡住 最终会因您看到的第二个错误而失败 受够了一段时间后 我转
  • 相当于 Interface Builder 中 UIButton 的动态类型“自动调整字体”设置?

    UILabel 有一个Dynamic Type Automatically Adjusts FontInterface Builder 属性检查器中的复选框 Interface Builder 中是否有等效项用于自动调整 UIButton
  • Xcode 无法找到 strip-frameworks.sh 目录

    我最近将 Xcode 更新到版本 7 1 其中包括 Swift 2 1 我安装了 Swift 2 1 没有遇到任何问题 在尝试运行我的项目后 我意识到我需要获取最新版本的 Realm 因为之前的版本不支持 Swift 2 1 我删除了旧框架
  • Swift 闭包作为 AnyObject

    我尝试使用这个方法 class addMethod 在 Obj c 中使用如下 class addMethod self class selector eventHandler imp implementationWithBlock han
  • Swift 3 中是否提供内置内部函数?

    我可以在 Xcode 自动完成弹出窗口中看到各种内置函数 如 builtin popount builtin clz 等 我不确定这些是从哪里获取的 单击命令不会导致快速定义或任何文档 Swift 3 中是否有 builtin 或等效的内部
  • iOS UIButton 带有圆角和背景 bug

    我发现圆形 UIButton 存在一个奇怪的问题 这是我创建此按钮的代码块 let roundedButton UIButton type System roundedButton frame CGRectMake 100 100 100
  • 将 Xcode 的测试类助理编辑器与 Swift 类结合使用

    在 Xcode 中工作时 在助理编辑器中提取单元测试用例通常会很好 目前 我一直在手动选择测试文件 但我看到助理编辑器有一个选项Test Classes 我试图让这个选项自动提取我的测试文件 但我似乎无法让它工作 是否需要某种配置 它不适用
  • 在 Swift 中自动移动 UISlider

    我想在按下按钮时将 UISlider 从 minValue 循环移动到 maxValue 并在再次按下按钮时将其停止在当前位置 我想使用 Swift 我遇到的主要问题是函数 slider setValue 太快了 我希望动画更慢 IBAct
  • 无法转换“UINavigationController”类型的值

    我正在为我的应用程序实现一个搜索界面 因此基本上我会将搜索关键字从一个 ViewController 传递到另一个 ViewController 我已经多次进行过这种类型的参数传递 但这次似乎有些奇怪 目标 ViewController 嵌
  • 如何将音乐从我的应用程序切换到 iPod

    我在用MusicPlayerController我的应用程序中的对象来播放音乐 我知道当 iPhone ipod 应用程序终止时 可以继续播放我的应用程序音乐 我该怎么做 这涉及到一些事情 您必须在两种音乐播放器之间进行选择 应用程序音乐播
  • Xcode 9 中的“addingPercentEncoding”是否损坏?

    在 Swift 3 x 和 Xcode 9 beta 2 中 使用addingPercentEncoding https developer apple com documentation swift string 1690785 addi
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self
  • 在 UIMenuItem 上设置accessibilityLabel

    我正在尝试设置accessibilityLabel of a UIMenuItem而且似乎没有效果 无论如何 VoiceOver 只是读取项目的标题 let foo UIMenuItem title foo action selector

随机推荐

  • 使用 iconv 将 UTF8 转换为 UTF16

    当我使用 iconv 从 UTF16 转换为 UTF8 时 一切都很好 但反之亦然 它不起作用 我有这些文件 a 16 strings Little endian UTF 16 Unicode c program text a 8 stri
  • Android-布局的正确定位

    我似乎无法按照我想要的方式正确定位我的布局 我的布局看起来像这样 LinearLayout LinearLayout ListView LinearLayout TextView TextView TextView Button 我的目标是
  • 如何更改全局 .vscode 文件夹的位置?

    我正在 Linux 上设置 Visual Studio Code 由于机器是共享的 我的 HOME文件夹的大小受到限制 没有空间容纳扩展名 存储在 HOME vscode 我尝试安装它们失败了 我在其他开发目录上确实有足够的空间 但我找不到
  • 从 Android 通讯录中删除联系人

    我正在尝试从手机通讯录中删除联系人 该联系人会从手机联系人中删除 但不会从服务器端 Google 联系人 中删除 并且当 Google 联系人同步触发时 已删除的联系人会重新出现 下面是我的代码 public static void del
  • BIRT:无法检索 XML 数据源。 XML 数据源文件无效或该文件不存在

    我创建了一个 XML 数据源 用于从本地应用程序获取 XML 数据 创建数据集时出现以下错误 org eclipse datatools connectivity oda OdaException XML data source canno
  • Python:剥离除数字之外的所有内容

    我必须从几个字符串中的每个字符串中提取一个数字 测量的时间值 我怎样才能优雅地做到这一点 所有数字均为正数 且最多保留两位小数 例如 2 3 40 09 101 4 E 表示法中没有数字 我正在寻找的代码应该执行类似于以下伪代码的操作 gt
  • Swift 中未宣布辅助功能自定义操作

    当我添加accessibilityCustomActions对于一个对象 它在设备上可以正常工作 只要能够上下滑动操作并选择它们 但没有任何公告表明有 可用操作 我应该将其写入accessibilityLabel myself 我认为通过将
  • 如何查明实体框架对象是否已更改?

    我有一个叫做Uczestnik刚刚保存到数据库 var konsultant uczestnik Konsultanci uczestnik Konsultanci null null attached object and reuse i
  • 如何检测仅包含空格的字符串?

    包含一个空格的字符串长度始终等于 1 alert My str length str length 空格是一个字符 所以 str alert My str length str length My str length 3 如何区分空字符串
  • 使用 Dygraphs 绘制图表:根据缩放进行数据采样

    尽管与其他解决方案相比 Dygraphs 的性能非常好 但当查看越来越多的数据点时 性能不可避免地会变慢 我已经在本地加载了所有数据 Dygraphs 有没有办法智能地显示较低的分辨率 就数据点数量而言 然后在缩放时显示更多内容 虽然没有内
  • 同一解决方案中的 MVC 和 Web API 项目

    我不久前创建了一个解决方案 其中包含一个 Web API 2 项目 向移动设备提供 JSON 数据 和一个类库 包括我的数据访问服务 Web API 项目使用 Ninject 进行 DI 一切正常 现在我需要为几个网页添加一个单独的 MVC
  • 如何在 Odoo 12 中使用 Python XML-RPC 注册付款

    首先我创建了这个函数 def invoiceRegisterPayment self register payment row confirm result self ODOO OBJECT execute kw self DATA sel
  • 如何设置SBT的默认项目

    假设我有一个包含三个项目的构建 A B 和 C 如果我当前处于 A 的上下文中并重新加载构建 则重新加载后可能会将上下文更改为 C 因此 每次重新加载后我都必须更改项目上下文 有没有办法将特定项目设置为默认上下文 SBT 选择第一个词法项目
  • 来自服务器的错误:拨打后端时出错:拨打 tcp 10.9.84.149:10250: getsockopt: 连接被拒绝

    我有一个包含三个节点的 kubernetes 集群 10 9 84 149 10 9 105 90 and 10 9 84 149 当我的应用程序尝试在某个 pod 内执行命令时 kuebctl exec it
  • 使用 powershell 合并两个相似但两列不同的表

    我需要连接在 Powershell 中创建的两个表 问题在于 在它们共享的 5 列中 每个表中有两列不同 我怎样才能连接这两个表 然后能够对它们进行排序 我猜我会让两个人做以下事情 例子 表格1 列 a b c d e 表2 a x c d
  • 带分支的 Git LFS 的工作流程是什么?

    我已将 Git LFS 引入到我在 bitbucket org 上的一个存储库中 分叉此存储库的用户无法推送到他们的分叉 因为那里没有空间可容纳 LFS 文件 我的理解是 当您在那里分叉存储库时 LFS 文件不会被复制 将 Git LFS
  • 使用 Azure Active Directory 验证 .NET Core 2.2 API 时出现 CORS 错误

    我正在尝试在基于 Visual Studio 2019 Core 2 2 的基本 NET Core 2 2 React 项目模板构建的网页上使用 AzureAD 设置多租户 OpenId 身份验证 Core 2 2 因为 3 0 上的身份验
  • appcompat 中使用 ActionBar 的自定义布局会导致内容与操作栏重叠

    我已经实现了自定义操作栏布局AppCompat public class DoneBarActivity public interface OnSaveActionListener public void onSave public sta
  • 新版 jQuery 中最令您兴奋的是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 Swift 4 中创建类似 Spotlight 的窗口?

    我想创建一个窗口作为我的应用程序的一部分 在按下某个按键后显示一个类似聚光灯的窗口 但我所能得到的只是隐藏title override func viewWillAppear self view window titleVisibility