Post

Replies

Boosts

Views

Activity

Reply to Using PDFkit using SwiftUI?
I would say that you need to use PDFKit view object inside a SwiftUI component like I did to use a TextView in ly SwiftUI appThis is a simplified version : import SwiftUI import os let uiLog = OSLog(subsystem: "com.visual-science.CryptiK", category: "UI") class EditorCoordinator : NSObject, NSTextViewDelegate { let textView: NSTextView; let scrollView : NSScrollView let text : Binding<NSAttributedString> init(binding: Binding<NSAttributedString>) { text = binding textView = NSTextView(frame: .zero) textView.autoresizingMask = [.height, .width] textView.textStorage?.setAttributedString(text.wrappedValue) textView.textColor = NSColor.textColor scrollView = NSScrollView(frame: .zero) scrollView.hasVerticalScroller = true scrollView.autohidesScrollers = false scrollView.autoresizingMask = [.height, .width] scrollView.documentView = textView super.init() textView.delegate = self } func textDidChange(_ notification: Notification) { switch notification.name { case NSText.didChangeNotification : text.wrappedValue = (notification.object as? NSTextView)?.textStorage ?? NSAttributedString(string: "") default: os_log(.error, log: uiLog, "Coordinator received unwanted notification") } } } struct DataTextEditorView: View, NSViewRepresentable { typealias Coordinator = EditorCoordinator typealias NSViewType = NSScrollView let text : Binding<NSAttributedString> func makeNSView(context: NSViewRepresentableContext<DataTextEditorView>) -> DataTextEditorView.NSViewType { os_log(.info, log: uiLog, "%@", context.coordinator.scrollView) return context.coordinator.scrollView } func updateNSView(_ nsView: NSScrollView, context: NSViewRepresentableContext<DataTextEditorView>) { os_log(.debug, log: uiLog, "%@", context.coordinator.self) os_log(.debug, log: uiLog, "%@", text.wrappedValue) } func makeCoordinator() -> EditorCoordinator { os_log(.info, log: uiLog, "makeCoordinator") let coordinator = EditorCoordinator(binding: text) return coordinator } }This is the kind of thing you need to do to use UIKit/AppKit UI element in a SwiftUI based AppRegardsGerard
Jan ’20
Reply to Swift UI Button and focus ring
Well my own answer, can be useful for others.I hesitated to use my own button style ... but this is the solution here in my casestruct SimpleButtonStyle: ButtonStyle { func pressColor(isPressed: Bool) -> Color{ if isPressed { return Color.gray } else { return Color.white } } func makeBody(configuration: Self.Configuration) -> some View { configuration.label .padding([.trailing, .leading], 10) .padding([.top, .bottom], 1) .background( RoundedRectangle(cornerRadius: 5) .fill(pressColor(isPressed: configuration.isPressed)) .overlay(RoundedRectangle(cornerRadius: 5) .stroke(lineWidth: 1) .foregroundColor(Color.gray) ) ) } } struct SomeButton : View { var body: some View { HStack{ Button(action: { print("Pressed") }) { Text("Press") } } .buttonStyle(SimpleButtonStyle()) .font(.headline) .padding(.trailing, 10) } }Take care
Mar ’20