我想要一个显示多行文本的 SwiftUI 视图,具有以下要求:
感觉最合适的解决方案是拥有一个列表视图,包装原生 UITextView/NSTextView。
这是我到目前为止所拥有的。它实现了大多数要求,除了具有正确的行高度。
//
// ListWithNativeTexts.swift
// SUIToy
//
// Created by Jaanus Kase on 03.05.2020.
// Copyright © 2020 Jaanus Kase. All rights reserved.
//
import SwiftUI
let number = 20
struct ListWithNativeTexts: View {
var body: some View {
List(texts(count: number), id: \.self) { text in
NativeTextView(string: text)
}
}
}
struct ListWithNativeTexts_Previews: PreviewProvider {
static var previews: some View {
ListWithNativeTexts()
}
} …Run Code Online (Sandbox Code Playgroud) swiftui swiftui-list uiviewrepresentable nsviewrepresentable
我正在为 SwiftUI 2.0 重新设计我的应用程序,但在复制我可以使用 AppDelegate 执行的操作时遇到了问题。
我正在使用 NSViewRepresentable 来访问 NSWindow,这样我就可以删除窗口的标题栏(我知道它不在指南中,但永远不会提交)。.titled从 中删除时styleMask,应用程序崩溃。
struct WindowAccessor: NSViewRepresentable {
@Binding var window: NSWindow?
func makeNSView(context: Context) -> NSView {
let view = NSView()
DispatchQueue.main.async {
self.window = view.window
self.window?.isOpaque = false
self.window?.titlebarAppearsTransparent = true
self.window?.backgroundColor = NSColor.clear
self.window?.styleMask = [.fullSizeContentView]
self.window?.isMovableByWindowBackground = true
self.window?.backingType = .buffered
}
return view
}
func updateNSView(_ nsView: NSView, context: Context) {}
}
@main
struct MyApp_App: App {
@State private var window: NSWindow?
var body: …Run Code Online (Sandbox Code Playgroud) 关于 StackOverflow 的第一个问题(对于针对 macOS 的本机应用程序开发者来说相对较新)。
我目前正在尝试构建一个简单的 SwiftUI 视图,它利用 WKWebView 的 loadHTMLString 函数在屏幕上显示硬编码的 HTML 字符串。
AFAIK webkit 目前不支持 SwiftUI,因此我需要使用NSViewRepresentable在我的 SwiftUI 应用程序中嵌入 AppKit UI 。到目前为止,我根据文档和 XCode 的自动完成功能获得了以下信息:
import SwiftUI
import WebKit
struct HTMLView: NSViewRepresentable {
typealias NSViewType = WKWebView
let html = "<h1>Hello wordl</h1>"
func makeNSView(context: Context) -> WKWebView {
let webview = WKWebView()
return webview
}
func updateNSView(_ nsView: WKWebView, context: Context) {
nsView.loadHTMLString(html, baseURL: nil)
}
}
struct HTMLView_Previews: PreviewProvider {
static var previews: some View {
HTMLView() …Run Code Online (Sandbox Code Playgroud) Goal
An NSTextView that, upon new lines, expands its frame vertically to force a SwiftUI parent view to render again (i.e., expand a background panel that's under the text + push down other content in VStack). The parent view is already wrapped in a ScrollView. Since the SwiftUI TextEditor is ugly and under-featured, I'm guessing several others new to MacOS will wonder how …