我想知道是否有可能设置边距或填充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)
但是,感觉我必须在左侧添加一些填充,以便数字不会太靠近边框。这甚至可能吗?
我正在使用SwiftUI新的App生命周期构建 macOS 应用程序。
启动新项目后,所有默认的 macOS 菜单项(如剪切、复制、粘贴)都已经存在,但它们是灰色的。如何为这些默认菜单项实现方法?
编辑:我目前在Xcode 12.2 beta 3(20B5012d) 上使用macOS Big Sur 11.0.1 Beta(12B5035g)。我不想用 Storyboards 或 AppDelegate 来解决这个问题,而是用 SwiftUI 和新的App生命周期。
如何使用Swift以编程方式选择NSTextField中的所有文本?
对于UITextField,有一个类似的方法
textField.selectedTextRange = textField.textRangeFromPosition(...)
Run Code Online (Sandbox Code Playgroud) 我喜欢在我的应用中播放声音.我发现了很多例子,也可以在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) 我正在创建一个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)
我无法找到如何'交出' bundleFile到savePanel.
所以我的主要问题是:如何将应用程序包中的文件保存/复制到自定义目录?
其他问题取决于NSSavePanel:1)它似乎没有默认本地化(我的Xcode方案设置为德语,但面板显示为英文),我是否必须自己定制?2)有没有办法在默认情况下展示面板?
在 SwiftUI 中是否可以强制 aView使用明暗模式——就像overrideUserInterfaceStyle在UIKit 中那样?
我有一个NSTextField并希望在用户更改值时发送一个操作。我在界面生成器中检查了“连续”(它可以很好地与 NSSlider 配合使用),但是 NSTextField 仅在我取消焦点时才发送他的操作。如何从 NSTextField 连续发送操作(使用 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)
我的功能没有被调用,我找不到我们的原因.我感谢任何帮助!
我想创建一个从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) swift ×8
nstextfield ×3
macos ×2
swiftui ×2
audio ×1
cocoa ×1
continuous ×1
ios-darkmode ×1
nsbundle ×1
nsevent ×1
nsmenu ×1
nsmenuitem ×1
nssavepanel ×1
nsslider ×1
nsstatusbar ×1
nsstatusitem ×1
nsurlsession ×1
padding ×1
swift3 ×1
xcode ×1