![]()
ライン番号などを備えたパフォーマンスマコーとiOS TextView。 (nstextView/uitextView再emplementation)
このプロジェクトの目標は、TextKit 2フレームワークを利用してNSTExtView/UITEXTVIEWの交換再利用可能なコンポーネントを構築することです。多くの正当な理由のため。
コンポーネントは、主にSwift Studioニーズをソースコードエディターとして提供するために開発されています。
TextKit 2は、WWDC 2021でテキストレイアウトなどのTextKit 1の代替品として発表されました。 Appleは、テキスト編集に特化したビューコンポーネントであるNSTextViewがTextKit 2を採用し、TextKit 1ビットに沿ってサポートを提供することを発表しました。 NSTextView + TextKit2の詳細を学び始めたとき、今日(2022年2月)の時点で、 NSTextViewもTextKit 2クラスも完全に機能していないことに気付きました。その過程で、私はAppleにDTS(サポートチケット)を要求するいくつかのバグレポートを報告しました。最終的に、私は特定のバグにブロックされ、このプロジェクトを開始するようになりました。
GitHubスポンサーからの継続的な貢献のおかげで、プロジェクトの財政的持続可能性が可能です
SttextViewは、すでにテキストエディターコンポーネントとして適切に適切です。ただし、v1.0のリリース前に改善が必要です
新機能を提案または投票する:機能要求
STTextViewは、Swift Package Managerを使用して配布されます。 Package.swiftの依存関係として追加してプロジェクトにインストールします。swiftマニフェストまたはXcodeプロジェクト設定の「パッケージ依存関係」を介してインストールしてください
let package = Package (
dependencies : [
. package ( url : " https://github.com/krzyzanowskim/STTextView " , from : " 1.0.0 " )
]
) デモアプリケーションTextEditおよびTextEdit.swiftuiを使用すると、ライブラリを探索できます。
StTextViewコンポーネントのプラグインは、単純なテキスト表示を超えた追加の機能とカスタマイズを提供します。構文のハイライト、単語数の追跡などの機能を追加することにより、テキストビューのコア機能を強化します。これらのプラグインは、モジュール式で適応性のあるソフトウェア構造を維持しながら、SttextViewのユーティリティを拡張します。
TextView 、StTextViewをラップするSwiftUIビューです。
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サブクラスであり、他のビューと同様に初期化できます。 nstextViewのAPIに似たAPIがあります。
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これまでにAppleに報告したNSTextViewとTextKitフレームワークに関連するTextKit 2の問題とバグのリスト:
...問題のリストが完全ではないことを知っています。私はsttextViewのほとんどの問題の回避策を講じました。
( STプレフィックスは、1939年以来SSが良くないため、「 S Wift S T Udio」の略です)
新しいディスカッショントピックまたはプルリクエストを開始します。
私はあなたから聞いてみたいです! X/Twitter @krzyzanowskim、mastodon @krzyzanowskim @mastodon.socialからご連絡ください。
GNU GPLライセンスV3と互換性のあるライセンスの下でオープンソースアプリケーションを作成している場合は、GPLV3の条件の下でSTTExtViewを使用できます。
5ユーロから1つを入手してください。
STTExtViewを使用して、オープンしていない製品とアプリケーションを開発する場合は、商業ライセンスが適切です。このオプションを使用すると、ソースコードは独自に保たれます。アプリケーションソースコード全体をオープンソースライセンスに変更する必要はありません。 sttextViewコマーシャルライセンスを購入します