![]()
Персонал MacOS и iOS TextView с номерами строк и многое другое. (NstextView/uitextView Reimplemptionsation)
Цель этого проекта - создать nstextView/uitextView Mrecaintable Component, используя структуру TextKit 2. По многим веским причинам.
Компонент в основном разработан для удовлетворения потребностей Swift Studio в качестве редактора исходного кода .
TextKit 2 был объявлен во время WWDC 2021 как замена TextKit 1 для макета текста и еще много чего. Apple объявила, что NSTextView , компонент View, специализированный на редактировании текста, примет TextKit 2 и предоставит поддержку в течение 1 бит. Когда я начал узнать больше о NSTextView + TEXTKIT2, я понял, что на сегодняшний день (февраль 2022 г.) ни NSTextView , ни классы TextKit 2 не являются полностью функциональными. Попутно я сообщил о нескольких сообщениях Apple, запросив DTS (билеты на поддержку). В конце концов, меня заблокировали конкретные ошибки, которые подтолкнули меня к началу этого проекта.
Финансовая устойчивость проекта возможна благодаря продолжающимся вкладам наших спонсоров GitHub
SttextView уже хорошо подходит как компонент текстового редактора. Тем не менее, это все еще нуждается в улучшениях до выпуска V1.0
Предложить или проголосовать за новые функции: запросы на функции
STTextView распределяется с использованием диспетчера пакетов Swift. Установите его в проекте, добавив его в качестве зависимости в вашем Package.swift Запрос Manifest или с помощью «зависимостей пакета» в настройках проекта Xcode
let package = Package (
dependencies : [
. package ( url : " https://github.com/krzyzanowskim/STTextView " , from : " 1.0.0 " )
]
) Демонстрационные приложения Textedit и Textedit.swiftui позволяют исследовать библиотеку.
Плагины в компоненте STTEXTVIEW предлагают дополнительные функции и настройки за пределами простого текстового отображения. Они расширяют основные возможности представления текста, добавляя такие функции, как выделение синтаксиса, отслеживание подсчета слов и многое другое. Эти плагины расширяют утилиту StextView, сохраняя при этом модульную и адаптируемую структуру программного обеспечения.
TextView - это представление Swiftui, которое завершает 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 - это подкласс NSView и может быть инициализирован, как и любое другое представление. У него есть API, который похож на ATS NSTEXTVIEW.
import STTextView
let textView = STTextView ( )
view . addSubview ( textView )(macOS) Добавить в просмотр прокрутки
let textView = STTextView ( )
let scrollView = NSScrollView ( )
scrollView . documentView = textView let scrollView = STTextView . scrollableTextView ( )
let textView = scrollView . documentView as! STTextViewТекстовое представление можно настроить различными способами.
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 = trueДобавить желоб с номерами строк
textView . showLineNumbers = true
textView . gutterView ? . drawSeparator = true(macOS) Включите необязательный поиск и займе Найдите интерфейс внутри представления, обычно просмотр прокрутки.
textView . isIncrementalSearchingEnabled = true
textView . textFinder . incrementalSearchingShouldDimContentView = trueСписок вопросов TextKit 2 и ошибок, связанных с NSTEXTVIEW и структурой TextKIT, которые я сообщил Apple до сих пор:
... Я знаю, что список проблем не завершен. Мне удалось обезвредить большинство проблем в StextView.
( ST Prefix означает « S Wift S T Udio», потому что SS не является хорошим префиксом с 1939 года)
Начните новую тему для обсуждения или запрос на привлечение.
Я хотел бы услышать от вас! Свяжитесь с помощью X/Twitter @krzyzanowskim, mastodon @chrzyzanowskim @mastodon.social.
Если вы создаете приложение с открытым исходным кодом в соответствии с лицензией, совместимой с лицензией GNU GPL V3, вы можете использовать STTEXTVIEW в соответствии с условиями GPLV3.
Получите один, начиная с 5 евро.
Если вы хотите использовать STTEXTVIEW для разработки продуктов и приложений, не запчащихся, коммерческая лицензия подходит. С помощью этой опции ваш исходный код сохраняется запатентованным. Вам не придется изменять исходный код приложения на лицензию с открытым исходным кодом. Приобрести коммерческую лицензию STTEXTVIEW