小编ixa*_*any的帖子

NSTextField 边距和填充?(迅速)

我想知道是否有可能设置边距或填充NSTextField

我实现了或多或少的自定义文本字段(此屏幕截图中的第一个)...

在此处输入图片说明

...使用此代码:

myTextField.wantsLayer = true
myTextField.layer?.cornerRadius = 2.0
myTextField.layer?.borderWidth = 1.0
myTextField.layer?.borderColor = CGColor(red: 0.69, green: 0.69, blue: 0.69, alpha: 1.0)
Run Code Online (Sandbox Code Playgroud)

但是,感觉我必须在左侧添加一些填充,以便数字不会太靠近边框。这甚至可能吗?

xcode padding nstextfield swift swift3

3
推荐指数
1
解决办法
2970
查看次数

SwiftUI:如何在 macOS 应用程序中实现编辑菜单

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

启动新项目后,所有默认的 macOS 菜单项(如剪切、复制、粘贴)都已经存在,但它们是灰色的。如何为这些默认菜单项实现方法?

在此处输入图片说明

编辑:我目前在Xcode 12.2 beta 3(20B5012d) 上使用macOS Big Sur 11.0.1 Beta(12B5035g)。我不想用 Storyboards 或 AppDelegate 来解决这个问题,而是用 SwiftUI 和新的App生命周期。

nsmenu nsmenuitem swift swiftui swiftui-windowgroup

3
推荐指数
1
解决办法
929
查看次数

使用Swift选择NSTextField中的所有文本

如何使用Swift以编程方式选择NSTextField中的所有文本?

对于UITextField,有一个类似的方法

textField.selectedTextRange = textField.textRangeFromPosition(...)
Run Code Online (Sandbox Code Playgroud)

nstextfield swift

2
推荐指数
1
解决办法
2939
查看次数

在macOS上播放声音

我喜欢在我的应用中播放声音.我发现了很多例子,也可以在Swift 3上编译和运行它们.但是它们总是用于iOS.当在我的应用程序中使用此代码时,AVAudioSession保持未定义.我需要做什么?OSX有什么不同之处吗?

import AVFoundation
...
    var audioPlayer = AVAudioPlayer()
    func PlaySound( ) {
        let alertSound = URL(fileURLWithPath: Bundle.main.path(forResource: "Sound", ofType: "mp3")!)
        do {
            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
        } catch _ {
        }
        do {
            try AVAudioSession.sharedInstance().setActive(true)
        } catch _ {
        }
        do {
            audioPlayer = try AVAudioPlayer(contentsOf: alertSound)
        } catch _{
        }
        audioPlayer.prepareToPlay()
        audioPlayer.play()
    }
Run Code Online (Sandbox Code Playgroud)

audio macos avaudiosession swift

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

使用NSSavePanel将文件从Bundle保存/复制到桌面

我正在创建一个macOS应用程序,它在Bundle目录中附带了一些.zip文件.

用户应该能够将这些文件从我的应用程序保存到自定义目录.

我发现NSSavePanel并认为这是正确的方法 - 这就是我到目前为止所做的:

@IBAction func buttonSaveFiles(_ sender: Any) {

    let savePanel = NSSavePanel()

    let bundleFile = Bundle.main.resourcePath!.appending("/MyCustom.zip")

    let targetPath = NSHomeDirectory()
    savePanel.directoryURL = URL(fileURLWithPath: targetPath.appending("/Desktop")) 
    // Is appeding 'Desktop' a good solution in terms of localisation?

    savePanel.message = "My custom message."
    savePanel.nameFieldStringValue = "MyFile"
    savePanel.showsHiddenFiles = false
    savePanel.showsTagField = false
    savePanel.canCreateDirectories = true
    savePanel.allowsOtherFileTypes = false
    savePanel.isExtensionHidden = true

    savePanel.beginSheetModal(for: self.view.window!, completionHandler: {_ in })

}
Run Code Online (Sandbox Code Playgroud)

我无法找到如何'交出' bundleFilesavePanel.

所以我的主要问题是:如何将应用程序包中的文件保存/复制到自定义目录?

其他问题取决于NSSavePanel:1)它似乎没有默认本地化(我的Xcode方案设置为德语,但面板显示为英文),我是否必须自己定制?2)有没有办法在默认情况下展示面板?

macos cocoa nsbundle nssavepanel swift

2
推荐指数
1
解决办法
1213
查看次数

SwiftUI:强制视图使用明暗模式

在 SwiftUI 中是否可以强制 aView使用明暗模式——就像overrideUserInterfaceStyleUIKit 中那样?

swiftui ios-darkmode

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

Swift:如何从 NSTextField 连续发送操作

我有一个NSTextField并希望在用户更改值时发送一个操作。我在界面生成器中检查了“连续”(它可以很好地与 NSSlider 配合使用),但是 NSTextField 仅在我取消焦点时才发送他的操作。如何从 NSTextField 连续发送操作(使用 Swift)?

continuous nstextfield nsslider swift

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

检测NSStatusItem(Swift)上的左右键单击事件

我正在构建状态栏应用程序,并希望根据用户是向左还是向右单击来调用不同的操作.这是我到目前为止所拥有的:

var statusItem = NSStatusBar.system().statusItem(withLength: -1)
statusItem.action = #selector(AppDelegate.doSomeAction(sender:))

let leftClick = NSEventMask.leftMouseDown
let rightClick = NSEventMask.rightMouseDown

statusItem.button?.sendAction(on: leftClick)
statusItem.button?.sendAction(on: rightClick)

func doSomeAction(sender: NSStatusItem) {
    print("hello world")
}
Run Code Online (Sandbox Code Playgroud)

我的功能没有被调用,我找不到我们的原因.我感谢任何帮助!

nsevent nsstatusitem nsstatusbar swift

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

Swift:阻塞mainThread,直到函数用completionHandler加载数据/ NSURLSession

我想创建一个从url加载数据然后将responseData作为NSData返回的函数.我想阻止mainThread直到数据完成.这是我到目前为止:

功能:

typealias CompletionBlock = (NSData!, NSURLResponse!, NSError!) -> NSData
func requestURL(targetUrl: String, httpMethod: String, httpBody: String, completion: CompletionBlock){

// REQUEST
let target = NSURL(string: targetUrl) // URL
let request = NSMutableURLRequest(URL: target!) // REQUEST

// HTTP-METHOD
var method = httpMethod
if method != "POST" { method = "GET" } // STANDARD: GET
    request.HTTPMethod = method

// HTTP-BODY
let body = httpBody
if body != "" {
    request.HTTPBody = body.dataUsingEncoding(NSUTF8StringEncoding)
}

// NSURLSession
let session = NSURLSession.sharedSession()
let task = …
Run Code Online (Sandbox Code Playgroud)

completionhandler nsurlsession swift

0
推荐指数
1
解决办法
1235
查看次数