![]()
Performant macOS und iOS textview mit Zeilennummern und vielem mehr. (NStextView/uitextView neuauflagung)
Ziel dieses Projekts ist es, NStextView/UitextView -Ersatz -Wiederverwendungskomponente mithilfe von Textkit 2 -Framework zu erstellen. aus vielen guten Gründen.
Die Komponente wurde hauptsächlich entwickelt, um die Swift Studio -Anforderungen als Quellcode -Editor zu erfüllen.
Textkit 2 wurde während des WWDC 2021 als Textkit 1 -Ersatz für Textlayout und so weiter angekündigt. Apple kündigte an, dass NSTextView , die für die Textbearbeitung spezialisierte Ansichtskomponente, TextKit 2 übernehmen und Unterstützung entlang des Textkit 1 -Bits bieten wird. Als ich anfing, mehr über NSTextView + textkit2 zu erfahren, wurde mir klar, dass weder NSTextView noch TextKit 2 -Klassen ab heute (Februar 2022) voll funktionsfähig sind. Unterwegs meldete ich Apple mehrere Fehlerberichte an, um DTS (Support -Tickets) anzufordern. Schließlich wurde ich von bestimmten Fehler blockiert, die mich dazu veranlassten, dieses Projekt zu starten.
Die finanzielle Nachhaltigkeit des Projekts ist dank der laufenden Beiträge unserer Github -Sponsoren möglich
SttextView ist bereits als Texteditor-Komponente geeignet. Vor der Veröffentlichung von V1.0 müssen jedoch noch Verbesserungen erforderlich sind
Neue Funktionen vorschlagen oder stimmen : Feature -Anfragen
STTextView wird mit dem Swift -Paket -Manager verteilt. Installieren Sie es in einem Projekt, indem Sie es als Abhängigkeit in Ihrem Package.swift hinzufügen. SCHWIFF OFFENTION oder über „Paketabhängigkeiten“ in Xcode -Projekteinstellungen
let package = Package (
dependencies : [
. package ( url : " https://github.com/krzyzanowskim/STTextView " , from : " 1.0.0 " )
]
) Mit den Demo -Bewerbungen textedit und textedit.Swiftui können Sie die Bibliothek erkunden.
Plugins in einer SttextView -Komponente bieten zusätzliche Funktionen und Anpassungen über die einfache Textanzeige hinaus. Sie verbessern die Kernfunktionen der Textansicht, indem sie Funktionen wie Syntax -Hervorhebung, Word -Count -Tracking und vieles mehr hinzufügen. Diese Plugins erweitern das Dienstprogramm der STTEXTVIEW und beibehalten gleichzeitig eine modulare und anpassbare Softwarestruktur.
Der TextView ist eine Swiftui -Ansicht, die die StTextView umhüllt.
import STTextViewSwiftUI
struct ContentView : View {
@ State private var text = AttributedString ( " Hello World! " )
@ State private var selection : NSRange ?
var body : some View {
TextView (
text : $text ,
selection : $selection ,
options : [ . wrapLines , . highlightSelectedLine ] ,
plugins : [ plugin1 ( ) , plugin2 ( ) ]
)
. textViewFont ( . preferredFont ( forTextStyle : . body ) )
}
} Die STTextView ist eine NSView -Unterklasse und kann wie jede andere Ansicht initialisiert werden. Es hat eine API, die dem von nStextView ähnelt.
import STTextView
let textView = STTextView ( )
view . addSubview ( textView )(macOS) zur Bildlaufansicht hinzufügen
let textView = STTextView ( )
let scrollView = NSScrollView ( )
scrollView . documentView = textView let scrollView = STTextView . scrollableTextView ( )
let textView = scrollView . documentView as! STTextViewDie Textansicht kann auf verschiedene Weise angepasst werden.
let paragraph = NSParagraphStyle . default . mutableCopy ( ) as! NSMutableParagraphStyle
// Set the line-height to 110%
paragraph . lineHeightMultiple = 1.1
paragraph . defaultTabInterval = 28
// Default Paragraph style
textView . typingAttributes [ . paragraphStyle ] = paragraph
// Set default font
textView . font = NSFont . monospacedSystemFont ( ofSize : 14 , weight : . regular )
// Set default text color
textView . textColor = . textColor
// Set text value
textView . text = " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ornare lobortis sem a vulputate. "
textView . addAttributes ( [ . foregroundColor : NSColor . red ] , range : NSRange ( location : 10 , length : 5 ) )
// Wrap/No wrap lines to editor width
textView . isHorizontallyResizable = true
// Highlight the selected line.
textView . highlightSelectedLine = trueFügen Sie die Rinne mit Zeilennummern hinzu
textView . showLineNumbers = true
textView . gutterView ? . drawSeparator = true(macOS) Aktivieren Sie eine optionale Such- und Replace-Schnittstelle in einer Ansicht, normalerweise eine Bildlaufansicht.
textView . isIncrementalSearchingEnabled = true
textView . textFinder . incrementalSearchingShouldDimContentView = trueListe von Textkit 2 -Problemen und Fehler im Zusammenhang mit NStextView und dem Textkit -Framework, das ich Apple bisher gemeldet habe:
... Mir ist bewusst, dass die Liste der Probleme nicht vollständig ist. Ich habe es geschafft, die meisten Probleme in SttextView zu umgehalten.
( ST -Präfix steht für " S Wift S t udio", weil SS seit 1939 kein gutes Präfix ist)
Starten Sie ein neues Diskussionsthema oder eine Pull -Anfrage.
Ich würde gerne von dir hören! Machen Sie sich mit X/Twitter @Krzyzanowskim, mastodon @krzyzanowskim @mastodon.social in Verbindung.
Wenn Sie eine Open-Source-Anwendung unter einer Lizenz erstellen, die mit der GNU GPL-Lizenz V3 kompatibel ist, können Sie SttextView unter den Bestimmungen des GPLV3 verwenden.
Holen Sie sich einen ab 5 €.
Wenn Sie STTEXTView verwenden möchten, um Produkte und Anwendungen ohne Open-Sourced zu entwickeln, ist die kommerzielle Lizenz angemessen. Mit dieser Option wird Ihr Quellcode proprietär gehalten. Sie müssen Ihren gesamten Anwendungsquellcode nicht in eine Open-Source-Lizenz ändern. Kaufen Sie eine SttextView -kommerzielle Lizenz