라이브 구문 하이라이트가있는 iOS 및 MACOS 용 간단하고 강력한 Swiftui 텍스트 편집기.
사용자 유형의 중요한 것을 강조하십시오.
iOS 13.0+ 및 MACOS 10.15+를 지원합니다.
파일 -> 스위프트 패키지 -> 패키지 종속성을 추가하고 URL https://github.com/kyle-n/HighlightedTextEditor 사용하십시오.
Podfile 에 pod 'HighlightedTextEditor' 추가하고 pod install 실행하십시오.
HighlodDexTeditor는 스타일을 적용하여 제공하는 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
}
}
}
}nsregularexpression은 한 번 인스턴스화됩니다. 보기가 다시 그릴 때마다 재현해서는 안됩니다. 이것은 성능에 도움이됩니다.
[HighlightRule] 의 정적 Vars로 구문 강조 표시에 유용한 몇 가지 사전 설정을 포함 시켰습니다. 다른 유용한 사전 설정에 대한 아이디어가 있으시면 사전 설정 코드로 풀 요청을 열어주십시오.
현재 사전 설정은 다음과 같습니다.
markdownurl사전 설정 사용의 예 :
HighlightedTextEditor ( text : $text , highlightRules : . markdown ) 또한 전체 문자열을 쉽게 선택하기 위해 사전 설정 변수 NSRegularExpression.all 을 추가했습니다.
사용의 예 :
HighlightedTextEditor ( text : $text , highlightRules : [
HighlightRule ( pattern : . all , formattingRule : TextFormattingRule ( key : . underlineStyle , value : NSUnderlineStyle . single . rawValue ) )
] ) | 매개 변수 | 유형 | 설명 |
|---|---|---|
text | 바인딩 <문자열> | 필드의 텍스트 내용 |
highlightRules | [Highlightrule] | 해당 패턴에 대한 패턴 및 서식 |
.introspect(callback: (_ editor: HighlightedTextEditorInternals) -> Void) : 개발자가 himightedTexTeditor에서 사용하는 기본 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은 각각 하나의 스타일을 설정하는 세 가지 초기화기를 제공합니다. 여러 스타일을 설정하려면 여러 TextFormattingRules를 사용하십시오.
| 매개 변수 | 유형 | 설명 |
|---|---|---|
key | nsattriptedstring.key | .underlineStyle .foregroundColor |
value | 어느 | key 에 적용되는 실제 스타일 ( key = .foregroundColor 의 ex는 value is UIColor.red 또는 NSColor.red ) |
| 매개 변수 | 유형 | 설명 |
|---|---|---|
key | nsattriptedstring.key | .underlineStyle .foregroundColor |
calculateValue | (문자열, 범위 <string.index>) -> any | key 값을 계산하는 콜백. 첫 번째 매개 변수는 Regex와 일치하는 텍스트 내용이며, 두 번째는 전체 문자열의 일치 범위입니다. |
value 이전의 Unttyped API를 사용하므로 주어진 key 에 대해 전달할 수있는 유형에 대한 설명서를 확인해야합니다.
| 매개 변수 | 유형 | 설명 |
|---|---|---|
fontTraits | uifontdescriptor.symbolictraits 또는 nsfontdescriptor.symbolictraits | 텍스트 서식 속성 (Uikit의 Ex [.traitBold] 및 AppKit의 .bold ) |
iOS 14 / MACOS 11을 타겟팅하는 경우 색상을 UICOLORS 또는 NSCOLORS로 변환하기 위해 새로운 Swiftui API를 활용하는 편의 초기화기를 사용할 수 있습니다.
| 매개 변수 | 유형 | 설명 |
|---|---|---|
foregroundColor | 색상 | 텍스트의 색상 |
fontTraits | uifontdescriptor.symbolictraits 또는 nsfontdescriptor.symbolictraits | 텍스트 서식 속성 (Uikit의 Ex [.traitBold] 및 AppKit의 .bold ) |
애플은 지혜로 Xcode 12 gm에 이러한 기능을 가능하게하지 않았다. Xcode 베타를 사용하고 있으며이 이니셜 라이저를 활성화하려면 project_name -> targets-> 지정된 플랫폼 -> 빌드 설정 -> 스위프트 컴파일러 -사용자 정의 플래그 및 플래그 -DBETA 추가하십시오. <
앱에서 HighlodDexTeditor를 사용하고 있습니까? 나는 여기에 당신을 특징으로하고 싶습니다! 앱 이름과 TestFlight 또는 App Store 페이지에 대한 링크와 함께 아래 목록에 새 총알을 추가하는 풀 요청을 열어주십시오.
Thiago Holanda의 MacEditortextView를 기반으로 한 AppKit 텍스트 편집기 코드.
Kyle Nazario가 제작했습니다.