Editor teks SwiftUi yang sederhana dan kuat untuk iOS dan macOS dengan sigungan sintaks langsung.
Sorot apa yang penting saat pengguna Anda mengetik.
Mendukung iOS 13.0+ dan MacOS 10.15+.
File -> Paket Swift -> Tambahkan Ketergantungan Paket dan gunakan URL https://github.com/kyle-n/HighlightedTextEditor .
Tambahkan pod 'HighlightedTextEditor' ke Podfile Anda dan jalankan pod install .
SorotedTextEditor Menerapkan Gaya untuk Pola Regex Pencocokan SMS yang Anda berikan. Anda dapat menerapkan beberapa gaya untuk setiap pola regex, seperti yang ditunjukkan pada contoh di bawah ini.
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
}
}
}
}Perhatikan nsregularexpression dipakai sekali . Seharusnya tidak diciptakan kembali setiap kali tampilan digambar ulang. Ini membantu kinerja.
Saya telah menyertakan beberapa preset yang berguna untuk penyorotan sintaks sebagai vars statis pada [HighlightRule] . Jika Anda memiliki ide untuk preset bermanfaat lainnya, jangan ragu untuk membuka permintaan tarik dengan kode preset Anda.
Preset saat ini meliputi:
markdownurlContoh menggunakan preset:
HighlightedTextEditor ( text : $text , highlightRules : . markdown ) Saya juga menambahkan variabel preset, NSRegularExpression.all , untuk dengan mudah memilih seluruh string.
Contoh menggunakannya:
HighlightedTextEditor ( text : $text , highlightRules : [
HighlightRule ( pattern : . all , formattingRule : TextFormattingRule ( key : . underlineStyle , value : NSUnderlineStyle . single . rawValue ) )
] ) | Parameter | Jenis | Keterangan |
|---|---|---|
text | Mengikat <string> | Konten teks bidang |
highlightRules | [Highlightrule] | Pola dan pemformatan untuk pola tersebut |
.introspect(callback: (_ editor: HighlightedTextEditorInternals) -> Void) : Memungkinkan Anda pengembang untuk mengakses objek UIKIT atau appkit yang didasari yang digunakan oleh SorotedTextEditor.onCommit(_ callback: @escaping () -> Void) : dipanggil saat pengguna berhenti mengedit.onEditingChanged(_ callback: @escaping () -> Void) : dipanggil saat pengguna mulai mengedit.onTextChange(_ callback: @escaping (_ editorContent: String) -> Void) : Dipanggil kapan pun text berubah.onSelectionChange(_ callback: @escaping (_ selectedRange: NSRange) -> Void).onSelectionChange(_ callback: @escaping (_ selectedRanges: [NSRange]) -> Void) (appkit saja) Diteruskan sebagai parameter ke .introspect() callbacks. Berguna untuk menyesuaikan perilaku editor dengan cara tertentu tidak didukung oleh HLTE API.
| Milik | Jenis | Keterangan |
|---|---|---|
textView | UITEXTVIEW atau NSTEXTVIEW | Untuk menyesuaikan editor teks UIKIT/APPKIT |
scrollView | Nsscrollview? | Untuk menyesuaikan pembungkus nsscrollview. Mengembalikan nil di uikat |
| Parameter | Jenis | Keterangan |
|---|---|---|
pattern | Nsregularexpression | Konten yang ingin Anda sorot. Harus dipakai sekali untuk kinerja. |
formattingRule | TextFormattingRule | Gaya berlaku untuk semua teks yang cocok dengan pattern |
formattingRules | [TextFormattingRule] | Array gaya yang berlaku untuk semua teks yang sesuai dengan pattern |
TextFormattingRule menawarkan tiga inisialisasi berbeda yang masing -masing mengatur satu gaya. Untuk mengatur beberapa gaya, gunakan beberapa TextFormatTingRules.
| Parameter | Jenis | Keterangan |
|---|---|---|
key | NsattributedString.key | Gaya untuk mengatur (ex .foregroundColor , .underlineStyle ) |
value | Setiap | Gaya aktual yang diterapkan pada key (ex untuk key = .foregroundColor , value UIColor.red atau NSColor.red ) |
| Parameter | Jenis | Keterangan |
|---|---|---|
key | NsattributedString.key | Gaya untuk mengatur (ex .foregroundColor , .underlineStyle ) |
calculateValue | (String, range <string.index>) -> apapun | Panggilan balik yang menghitung nilai untuk key . Parameter pertama adalah konten teks yang cocok dengan regex, kedua adalah kisaran pertandingan di string keseluruhan. |
value menggunakan API yang lebih tua dan tidak diketik sehingga Anda harus memeriksa dokumentasi untuk jenis apa yang dapat diteruskan untuk key yang diberikan.
| Parameter | Jenis | Keterangan |
|---|---|---|
fontTraits | Uifontdescriptor.symbolictraits atau nsfontdescriptor.symbolictraits | Atribut pemformatan teks (ex [.traitBold] di uikit dan .bold di appkit) |
Jika Anda menargetkan iOS 14 / macOS 11, Anda dapat menggunakan inisialisasi kenyamanan mengambil keuntungan dari API SwiftUi baru untuk mengubah warna menjadi UIColors atau Nscolors.
| Parameter | Jenis | Keterangan |
|---|---|---|
foregroundColor | Warna | Warna teks |
fontTraits | Uifontdescriptor.symbolictraits atau nsfontdescriptor.symbolictraits | Atribut pemformatan teks (ex [.traitBold] di uikit dan .bold di appkit) |
Apple, dalam kebijaksanaannya, belum mengaktifkan fitur -fitur ini untuk XCode 12 Gm. Jika Anda menggunakan beta Xcode dan ingin mengaktifkan inisialisasi ini, buka Project_name -> Target -> Platform yang ditentukan -> Pengaturan Bangun -> Kompiler Swift -Bendera Kustom dan Tambahkan Bendera -DBETA . <
Apakah Anda menggunakan SorotedTextEditor di aplikasi Anda? Saya ingin sekali menampilkan Anda di sini! Harap buka permintaan tarik yang menambahkan peluru baru ke daftar di bawah ini dengan nama aplikasi Anda dan tautan ke halaman TestFlight atau App Store -nya.
Appkit Teks Editor Kode Berdasarkan MaceditortextView oleh Thiago Holanda.
Dibuat oleh Kyle Nazario.