![]()
MacOS rentificante e iOS TextView con números de línea y mucho más. (NstextView/UITextView Reimplementation)
El objetivo de este proyecto es construir componente reutilizable de reemplazo NSTEXTVIEW/UITEXTVIEW utilizando el marco TextKit 2. Debido a muchas buenas razones.
El componente se desarrolla principalmente para satisfacer las necesidades de Swift Studio como editor de código fuente .
TextKit 2 se anunció durante WWDC 2021 como un reemplazo TextKit 1 para el diseño de texto y otras cosas. Apple anunció que NSTextView , el componente View especializado para la edición de texto, adoptará TextKit 2 y proporcionará soporte a lo largo de TextKit 1 bit. Cuando comencé a aprender más sobre NSTextView + textKit2, me di cuenta de que a partir de hoy (febrero de 2022), ni las clases NSTextView ni TextKit 2 son completamente funcionales. En el camino, informé varios informes de errores a Apple solicitando DTS (boletos de soporte). Finalmente, me bloquearon los errores específicos que me empujaron a comenzar este proyecto.
La sostenibilidad financiera del proyecto es posible gracias a las contribuciones en curso de nuestros patrocinadores de GitHub
SttextView ya es adecuado como componente de editor de texto. Sin embargo, todavía necesita mejoras antes del lanzamiento de V1.0
Sugerir o votar por nuevas características: solicitudes de funciones
STTextView se distribuye utilizando el Swift Package Manager. Instálelo en un proyecto agregándolo como una dependencia en su Package.swift .
let package = Package (
dependencies : [
. package ( url : " https://github.com/krzyzanowskim/STTextView " , from : " 1.0.0 " )
]
) Las aplicaciones de demostración textedit y textedit.swiftui te permite explorar la biblioteca.
Los complementos en un componente SttextView ofrecen funcionalidades y personalizaciones adicionales más allá de la simple pantalla de texto. Mejoran las capacidades centrales de la vista de texto agregando características como resaltar sintaxis, seguimiento del conteo de palabras y más. Estos complementos amplían la utilidad de SttextView mientras mantienen una estructura de software modular y adaptable.
El TextView es una vista Swiftui que envuelve el sttextview.
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 ) )
}
} STTextView es una subclase NSView y se puede inicializar como cualquier otra vista. Tiene una API que es similar a la de NStextView.
import STTextView
let textView = STTextView ( )
view . addSubview ( textView )(macOS) Agregar a la vista de desplazamiento
let textView = STTextView ( )
let scrollView = NSScrollView ( )
scrollView . documentView = textView let scrollView = STTextView . scrollableTextView ( )
let textView = scrollView . documentView as! STTextViewLa vista de texto se puede personalizar de varias maneras.
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 = trueAgregar canalones con números de línea
textView . showLineNumbers = true
textView . gutterView ? . drawSeparator = true(MacOS) Habilite una interfaz de búsqueda de búsqueda y reemplazo opcional dentro de una vista, generalmente una vista de desplazamiento.
textView . isIncrementalSearchingEnabled = true
textView . textFinder . incrementalSearchingShouldDimContentView = trueLista de temas y errores de TextKit 2 relacionados con nstextView y el marco TextKit que informé a Apple hasta ahora:
... Soy consciente de que la lista de problemas no está completa. Me las arreglé para solucionar la mayoría de los problemas en SttextView.
(El prefijo ST significa " S Wift S T Udio" porque SS no es un buen prefijo desde 1939)
Comience un nuevo tema de discusión o una solicitud de extracción.
¡Me encantaría saber de ti! Póngase en contacto a través de X/Twitter @Krzyzanowskim, Mastodon @Krzyzanowskim @mastodon.social.
Si está creando una aplicación de código abierto bajo una licencia compatible con el GNU GPL License V3, puede usar SttextView en los términos del GPLV3.
Obtenga uno a partir de 5 €.
Si desea utilizar SttextView para desarrollar productos y aplicaciones no abiertas, la licencia comercial es apropiada. Con esta opción, su código fuente se mantiene propietario. No tendrá que cambiar todo el código fuente de su aplicación a una licencia de código abierto. Compre una licencia comercial de SttextView