ライブ構文の強調表示を備えたiOSおよびMacOSのシンプルで強力なSwiftUIテキストエディター。
ユーザーのタイプとして重要なものを強調表示します。
iOS 13.0+およびMacOS 10.15+をサポートします。
ファイル - > Swiftパッケージ - >パッケージの依存関係を追加し、URLを使用しますhttps://github.com/kyle-n/HighlightedTextEditor 。
pod 'HighlightedTextEditor'をPodfileに追加し、 pod installを実行します。
HighlightedTextEditorは、提供するregexパターンのマッチングマッチングパターンにスタイルを適用します。以下の例に示すように、各正規表現パターンに複数のスタイルを適用できます。
import HighlightedTextEditor
// matches text between underscores
let betweenUnderscores = try ! NSRegularExpression ( pattern : " _[^_]+_ " , options : [ ] )
struct ContentView : View {
@ State private var text : String = " "
private let rules : [ HighlightRule ] = [
HighlightRule ( pattern : betweenUnderscores , formattingRules : [
TextFormattingRule ( fontTraits : [ . traitItalic , . traitBold ] ) ,
TextFormattingRule ( key : . foregroundColor , value : UIColor . red ) ,
TextFormattingRule ( key : . underlineStyle ) { content , range in
if content . count > 10 { return NSUnderlineStyle . double . rawValue }
else { return NSUnderlineStyle . single . rawValue }
}
] )
]
var body : some View {
VStack {
HighlightedTextEditor ( text : $text , highlightRules : rules )
// optional modifiers
. onCommit { print ( " commited " ) }
. onEditingChanged { print ( " editing changed " ) }
. onTextChange { print ( " latest text value " , $0 ) }
. onSelectionChange { ( range : NSRange ) in
print ( range )
}
. introspect { editor in
// access underlying UITextView or NSTextView
editor . textView . backgroundColor = . green
}
}
}
}NSRERGULARAREXPRESSIONが一度インスタンス化されることに注意してください。ビューが再描画されるたびに再現されるべきではありません。これはパフォーマンスに役立ちます。
[HighlightRule]の静的VARとして強調表示する構文のためのいくつかの有用なプリセットを含めました。他の便利なプリセットのアイデアがある場合は、プリセットコードでプルリクエストを自由に開いてください。
現在のプリセットには次のものが含まれます。
markdownurlプリセットを使用する例:
HighlightedTextEditor ( text : $text , highlightRules : . markdown )また、文字列全体を簡単に選択するために、プリセット変数NSRegularExpression.allを追加しました。
それを使用する例:
HighlightedTextEditor ( text : $text , highlightRules : [
HighlightRule ( pattern : . all , formattingRule : TextFormattingRule ( key : . underlineStyle , value : NSUnderlineStyle . single . rawValue ) )
] ) | パラメーター | タイプ | 説明 |
|---|---|---|
text | バインディング<String> | フィールドのテキストコンテンツ |
highlightRules | [蛍光物] | これらのパターンのパターンとフォーマット |
.introspect(callback: (_ editor: HighlightedTextEditorInternals) -> Void) :開発者は、highlightedTextEditorで使用されている基礎となるUIKITまたはAppKitオブジェクトにアクセスできるようにします。.onCommit(_ callback: @escaping () -> Void) :ユーザーが編集を停止したときに呼び出されます.onEditingChanged(_ callback: @escaping () -> Void) :ユーザーが編集を開始したときに呼び出されます.onTextChange(_ callback: @escaping (_ editorContent: String) -> Void) : textが変更されるたびに呼び出されます.onSelectionChange(_ callback: @escaping (_ selectedRange: NSRange) -> Void).onSelectionChange(_ callback: @escaping (_ selectedRanges: [NSRange]) -> Void) (appkitのみ) .introspect()コールバックにパラメーターとして渡されました。 HLTE APIでサポートされていない何らかの方法でエディターの動作をカスタマイズするのに役立ちます。
| 財産 | タイプ | 説明 |
|---|---|---|
textView | uitextViewまたはnstextView | UIKIT/AppKitテキストエディターをカスタマイズするため |
scrollView | nsscrollview? | NSSCrollviewラッパーをカスタマイズするため。 uikitでnilを返します |
| パラメーター | タイプ | 説明 |
|---|---|---|
pattern | nsRegulARExpression | 強調表示したいコンテンツ。パフォーマンスのために一度インスタンス化する必要があります。 |
formattingRule | TextFormattingRule | patternに一致するすべてのテキストに適用するスタイル |
formattingRules | [TextFormattingRule] | patternに一致するすべてのテキストに適用される一連のスタイル |
TextFormattingRuleには、それぞれが1つのスタイルを設定する3つの異なる初期剤を提供します。複数のスタイルを設定するには、複数のTextFormattingRulesを使用します。
| パラメーター | タイプ | 説明 |
|---|---|---|
key | nsattributedstring.key | 設定するスタイル(ex .foregroundColor 、 .underlineStyle ) |
value | どれでも | keyに適用される実際のスタイル(ex for key = .foregroundColor 、 valueはUIColor.redまたはNSColor.red ) |
| パラメーター | タイプ | 説明 |
|---|---|---|
key | nsattributedstring.key | 設定するスタイル(ex .foregroundColor 、 .underlineStyle ) |
calculateValue | (string、range <string.index>) - > any | keyの値を計算するコールバック。最初のパラメーターは、正規表現と一致するテキストコンテンツ、2番目は文字列全体の一致の範囲です。 |
value古い、無型のAPIを使用するため、特定のkeyに対してどのタイプを渡すことができるかについてドキュメントを確認する必要があります。
| パラメーター | タイプ | 説明 |
|---|---|---|
fontTraits | uifontdescriptor.symbolictraitsまたはnsfontdescriptor.symbolictraits | テキストフォーマット属性(ex [.traitBold] in uikitおよびappkitの.bold ) |
iOS 14 / MacOS 11をターゲットにしている場合は、色をuicolorsまたはnscolorsに変換するために、新しいSwiftui APIを利用して、便利な初期イザーを使用できます。
| パラメーター | タイプ | 説明 |
|---|---|---|
foregroundColor | 色 | テキストの色 |
fontTraits | uifontdescriptor.symbolictraitsまたはnsfontdescriptor.symbolictraits | テキストフォーマット属性(ex [.traitBold] in uikitおよびappkitの.bold ) |
Appleはその知恵で、Xcode 12 GMのこれらの機能を有効にしていません。 Xcodeベータ版を使用していて、この初期化を有効にする場合は、project_name->ターゲット - >指定されたプラットフォーム - > [設定] - > [swiftコンパイラ - カスタムフラグ - フラグ-DBETAを追加します。 <
アプリでhighlightedTextEditorを使用していますか?ここに紹介したいです!アプリの名前とTestFlightまたはApp Storeページへのリンクを使用して、以下のリストに新しい弾丸を追加するプルリクエストを開きます。
Thiago HolandaによるMacEditortextViewに基づくAppKitテキストエディターコード。
カイル・ナザリオによって作成されました。