Jin*_*Jin 6 macos appkit swift swiftui
我想使用SwiftUI View 在 macOS (Ventura) 上打印标签之类的东西。但这会导致一张白纸:
func startPrinting() {
let printView = NSHostingView(rootView: Text("I want to print"))
printView.frame.size = CGSize(width: 200, height: 200)
let printInfo = NSPrintInfo()
printInfo.topMargin = 0
printInfo.leftMargin = 0
printInfo.bottomMargin = 0
printInfo.rightMargin = 0
let printOperation = NSPrintOperation(view: printView, printInfo: printInfo)
printOperation.run()
}
Run Code Online (Sandbox Code Playgroud)
当我切换Text到时TextField,它被打印,但我不知道为什么。
如何打印SwiftUI视图?
小智 0
我还想打印 SwiftUI 视图。就我而言,是带注释的地图视图。网上好像没有太多建议。我添加了提供的函数来尝试使用 Xcode 14 和 Xcode 15 打印 ContentView,结果类似,但没有完整的解决方案。
import SwiftUI
func startPrinting() {
let printView = NSHostingView(rootView: ContentView())
printView.frame.size = CGSize(width: 200, height: 200)
let printInfo = NSPrintInfo()
printInfo.topMargin = 0
printInfo.leftMargin = 0
printInfo.bottomMargin = 0
printInfo.rightMargin = 0
let printOperation = NSPrintOperation(view: printView, printInfo: printInfo)
printOperation.run()
}
Run Code Online (Sandbox Code Playgroud)
// 来自:如何打印 SwiftUI 视图
struct ContentView: View {
@State var someText = "Text here"
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundColor(.accentColor)
Text(someText)
TextField("A textfield", text: $someText)
Button("Print this View") {
startPrinting()
}
}
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Run Code Online (Sandbox Code Playgroud)
更改 rootView 允许打印 ContentView 中的某些元素。不是地球仪。不是在文本字段中输入的文本。它确实包括文本内容、文本字段提示和出现的打印预览窗格中的按钮文本。
| 归档时间: |
|
| 查看次数: |
372 次 |
| 最近记录: |