小编ixa*_*any的帖子

如何使用Swift 3检测macOS默认模式和黑暗模式之间的切换

我想在用户从默认模式切换到黑暗模式时更改状态栏应用程序图标,反之亦然(使用Swift 3).这是我到目前为止所拥有的:

func applicationDidFinishLaunching(_ aNotification: Notification) {
    DistributedNotificationCenter.default().addObserver(self, selector: #selector(darkModeChanged(sender:)), name: "AppleInterfaceThemeChangedNotification", object: nil)
}

...

func darkModeChanged(sender: NSNotification) {
    print("mode changed")
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它没有用.我究竟做错了什么?

observers selector nsnotificationcenter swift nsdistributednotification

6
推荐指数
1
解决办法
1927
查看次数

SwiftUI:永远重复动画,最后有延迟,没有自动反转

我想永远重复一个动画,没有它自动反转,并且在动画播放后的重复之间有延迟/暂停。

\n

我知道有一个.delay()修改器,但它延迟了动画的开始:

\n
let ani = Animation.easeInOut.delay(1.0).repeatForever(autoreverses: false)\n
Run Code Online (Sandbox Code Playgroud)\n

除了.repeatForever修改器之外,动画播放后它会立即跳回到开头。但我希望最后一个关键帧在屏幕上保持短时间内可见。

\n

我\xe2\x80\x99ve也尝试了相反的方法,在修饰符.delay()后面添加一个.repeatForever,但没有成功(delay没有效果)。

\n
let ani = Animation.easeInOut.repeatForever(autoreverses: false).delay(1.0)\n
Run Code Online (Sandbox Code Playgroud)\n

如何在动画播放后添加延迟?

\n

animation swift swiftui swiftui-animation

6
推荐指数
0
解决办法
1338
查看次数

使用Swift将自定义字体添加到macOS应用

我遵循了一堆教程,但没有用:我只是想向macOS应用添加自定义字体。

我基本上尝试的是:

  1. 添加的.ttf字体文件到我的项目:目标组成情况,我也确保文件是使用拷贝制作Copy FilesBundle Phases。编译后,我可以看到所有文件都在捆绑包中。这样看来效果很好。

在此处输入图片说明

  1. Info.plist:我为要添加的每个字体文件(值)添加Fonts provided by application并创建了一个项目myFont.tff

  2. 我确保使用正确的字体名称。我在系统上安装了字体,并使用Interface Builder配置了Label,以便它使用所需的字体。我印了它的价值print(myLabel.font.fontName)

  3. 令人困惑:如果将我要添加到应用程序的完全相同的字体文件安装在系统Fontbook中并激活,则一切正常。当我停用它时,它不起作用。对我来说,这表明我使用的是正确的字体名称。

  4. 我找到ATSApplicationFontsPath并尝试将其添加到中Info.plist,但没有使用路径(由文档推荐)或类似.(似乎对某些人有用的)值确定。

在此处输入图片说明

感谢任何帮助!

macos fonts info.plist nsfont swift

5
推荐指数
2
解决办法
1791
查看次数

SwiftUI:更改 macOS 应用程序中的“关于视图”

SwiftUI我正在使用新的生命周期构建 macOS 应用程序App

\n

我很想更改 \xe2\x80\x9cAbout Window\xe2\x80\x9d 的内容(当您点击 apps\xe2\x80\x99 中的 \xe2\x80\x9cAbout DemoApp\xe2\x80\x9d 时出现)菜单)但不知道如何:

\n

在此输入图像描述

\n

如何用自定义视图替换“关于”视图?

\n

nsmenu menuitem about-box swift swiftui

5
推荐指数
3
解决办法
2498
查看次数

在Mac OS X应用程序中调整屏幕亮度

我想在Mac OS X应用程序中控制主屏幕的亮度(如F1/F2按钮).在iOS中,有这样的东西:

UIScreen.mainScreen().brightness = CGFloat(0.5)
Run Code Online (Sandbox Code Playgroud)

在OSX中我们有NSScreen,这很好找出主屏幕是什么,但它错过了.brightness方法.

那么如何在OSX上使用Swift调整显示器亮度?

macos cocoa brightness swift

4
推荐指数
1
解决办法
1881
查看次数

如何在OS X中移动文件并创建缺少的目录?

我想将OSX中的文件移动到另一个目录:

func moveFile(currentPath currentPath: String, targetPath: String) {

let fileManager = NSFileManager.defaultManager()

do { try fileManager.moveItemAtPath(currentPath, toPath: targetPath) }
catch let error as NSError { print(error.description) }

}
Run Code Online (Sandbox Code Playgroud)

一切正常,除了目标目录不存在的情况。我发现这.isWritableFileAtPath可能会有所帮助。

但是,在声明的函数中,我使用完整的文件路径(包括文件名)。

我该如何从路径中分割文件名或从其他路径中分割文件名:如果需要,如何在移动文件之前强制Swift创建目录?

macos cocoa nsfilemanager swift2

4
推荐指数
1
解决办法
1197
查看次数

将一个 NSMenu 添加到一个 NSTableCellView 中,它会在右键单击时弹出

我想NSMenu在用户右键单击 aNSTableCellView中的a时弹出a NSTableView

let cell = myTableView.make(withIdentifier: "myCustomTableCellView", owner: self) as! MyTableCellView // subclass of NSTableCellView

let menu = NSMenu()
menu.autoenablesItems = false
menu.addItem(NSMenuItem(title: "Test", action: nil, keyEquivalent: ""))

cell.menu = menu
Run Code Online (Sandbox Code Playgroud)

但是如果用户单击单元格,则不会弹出菜单。

我找不到任何sendActionOn方法或类似的东西。

如果有人可以提供帮助,那就太好了!

nsmenu nstableview nsmenuitem nstablecellview swift

4
推荐指数
1
解决办法
2592
查看次数

Swift:如何在 macOS 中观察屏幕是否被锁定

我想检测用户是否使用Swift.

基于此答案,我创建了以下代码:

import Cocoa
import Quartz

if let dict = Quartz.CGSessionCopyCurrentDictionary() as? [String : Any] {
    let locked = dict["CGSSessionScreenIsLocked"]
    print(locked as? String ?? "")
}
Run Code Online (Sandbox Code Playgroud)

...如果我明确运行代码,这似乎工作正常。

但是如何观察值以便在值更改时得到通知?

macos cocoa swift quartz

4
推荐指数
1
解决办法
945
查看次数

SwiftUI:使用 SidebarListStyle 在 NavigationView/列表中选择 NavigationLink

我想以编程方式选择/NavigationLink中的特定内容。NavigationViewList

\n

以下代码在纵向或横向模式下的 iPhone 上都可以正常工作 == 在列表除了目标视图之外不永久可见的情况下。

\n

在此输入图像描述

\n

代码:

\n
struct ContentView: View {\n\nprivate let listItems = [ListItem(), ListItem(), ListItem()]\n@State var selection: Int? = 0\n\nvar body: some View {\n    NavigationView {\n        \n        List(listItems.indices) {\n            index in\n            \n            let item = listItems[index]\n            let isSelected = (selection ?? -1) == index\n            \n            NavigationLink(destination: Text("Destination \\(index)"),\n                           tag: index,\n                           selection: $selection) {\n                \n                Text("\\(item.name) \\(index) \\(isSelected ? "selected" : "")")\n                \n            }\n            \n        }\n    \n    }\n    .listStyle(SidebarListStyle())\n    .onAppear(perform: {\n …
Run Code Online (Sandbox Code Playgroud)

navigationview swiftui navigationlink sidebarliststyle

4
推荐指数
1
解决办法
7285
查看次数

从另一个Array <String>过滤Array <String>的值

我有两个数组:

let arr1 = ["one.json", "two.json", "three.json"]
let arr2 = ["one.json", "three.json"]
Run Code Online (Sandbox Code Playgroud)

现在我想删除arr2in的所有值arr1,所以我在上面的例子中的预期结果将是let arrFiltered = ["two.json"].我知道如何使用for循环来处理这个问题,但是,我认为可能有一个更简单,更面向性能的解决方案?

arrays filter swift

3
推荐指数
2
解决办法
376
查看次数